○Unicodeおぼえ

Unicodeを使うか使わないかは、
VC プロジェクトのプロパティ→構成プロパティ→全般→文字セット

→Unicode文字セットを使用する
→マルチバイト文字セットを使用する

により切り替えることができる


■文字コード

WinNT.hを見ると

#ifdef  UNICODE
typedef WCHAR TCHAR
#else
typedef char TCHAR
#endif

つまり、UNICODEが定義されている場合には
TCHARはWCHARに置き換えられ、
定義されていない場合には
TCHARはcharになる
ちなみに

typedef wchar_t WCHAR;

WCHAR は wchar_t である


charを使用する所でTCHARを使うと、マクロにより自動的に変数が切り替えられる
また、TCHARを使った場合にはTCHAR用の関数を利用する必要がある
詳細はtchar.hを見ると書かれている

printf   _tprintf    
sprintf  _stprintf   
scanf    _tscanf     
fgetc    _fgettc     
fgets    _fgetts     
fputc    _fputtc     
fputs    _fputts     
getc     _gettc      
getchar  _gettchar   
gets     _getts      
gets     _getts      
putc     _puttc      
puts     _putts      
strtod   _tcstod     
strtol   _tcstol     
strtoul  _tcstoul    
atof     _tstof      
atol     _tstol      
atoi     _tstoi      
atoi     _ttoi       
atol     _ttol       
strcat   _tcscat     
strcpy   _tcscpy     
strlen   _tcslen     
system   _tsystem    
fopen    _tfopen     


■リテラル文字の変換
マルチバイトなら何もしない
ユニコードだとユニコードとして扱われる

TCHAR*test=TEXT("aaaa");
TCHAR test=TEXT('a');


■LPCSTRなど

LPSTR は *char であり、
LPWSTR は *wchar_t であり、
LPTSTR は *TCHAR である

つまり、読み方として、

LP   はポインタ
C    はconst
STR  はchar
TSTR はTCHAR
WSTR はwchar_t






▲トップページ > Windows と C++