Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2012年7月19日

utf-8 だと…

Xcode でのファイルが UTF-8 だったのでそれを含む文字列での動作を調べてみた.
データは半角”abc”,全角”ABC”,半角”アイウ”,全角”アイウ”
Xcode で以下のコードを書いたので,このソースファイルの形式は,UTF-8.


#include <iostream>
int main(int argc, const char * argv[])
{
  char abc[] = “abc” ;
  std::cout << strlen(abc) << “\t” << abc << “\n” ;
  char ABC[] = “ABC” ;
  std::cout << strlen(ABC) << “\t” << ABC << “\n” ;
  char aiu[] = “アイウ” ;
  std::cout << strlen(aiu) << “\t” << aiu << “\n” ;
  char AIU[] = “アイウ” ;
  std::cout << strlen(AIU) << “\t” << AIU << “\n” ;
  return 0;
  }


Xcode
3 abc
9 ABC
9 アイウ
9 アイウ


VC 6 MBCS
3 abc
6 ABC
3 アイウ
6 アイウ


VC 6 UNICODE
3 abc
3 ABC
3 アイウ
3 アイウ


VC 6 でのコードは,tchar.h を利用して以下の様に書き直している.
また,ファイル形式はシフトJIS.


#include <iostream>
#include <tchar.h>
#ifdef _UNICODE
#define tcout wcout
#else
#define tcout cout
#endif
int _tmain(int argc, const TCHAR * argv[])
{
  _tsetlocale(LC_ALL, _T(“”)) ;
  TCHAR abc[] = _T(“abc”) ;
  std::tcout << _tcslen(abc) << _T(“\t”) << abc << _T(“\n”) ;
  TCHAR ABC[] = _T(“ABC”) ;
  std::tcout << _tcslen(ABC) << _T(“\t”) << ABC << _T(“\n”) ;
  TCHAR aiu[] = _T(“アイウ”) ;
  std::tcout << _tcslen(aiu) << _T(“\t”) << aiu << _T(“\n”) ;
  TCHAR AIU[] = _T(“アイウ”) ;
  std::tcout << _tcslen(AIU) << _T(“\t”) << AIU << _T(“\n”) ;
  return 0;
  }

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • Categories:


    top

    %d人のブロガーが「いいね」をつけました。