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;
}