|
VisualC
Visual C のメモ†
primitive 型†
char | -128 〜 127 | 1byte(java は 2) |
unsigned char | 0 〜 255 | 1byte |
short | -32768 - 32767 | 2byte |
unsigned short | 0 〜 65535 | 2byte |
wchar_t | 〃 | 2byte |
int | -2147483648-2147483647 | 4byte |
long | | 4byte |
long long | | 8byte |
__int64 | | 8byte |
double | | 8byte |
ラッパ†
DWORD | unsigned long | 8byte |
LONGLONG | __int64 | 8byte |
文字列†
W系 (ワイド文字) = UNICODE†
- 主に新しい処理系ではこちらが使われる
- 1文字に必ず2バイト使う( 半角の 'A' でも 2byte )
- 2byte なので基本型はshort
型 | 実体 | 構文 | 書き換え |
wchar_t* | unsigned short* | wchar_t* str = L"A漢字"; | 可 |
WCHAR* | unsigned short* | WCHAR* = L"A漢字"; | 可 |
LPWSTR | unsigned short* | LPWSTR = L"A漢字"; | 可 |
LPCWSTR | const unsigned short* | LPCWSTR = L"A漢字"; | 不可 |
※ Lマクロは明示的に Unicode にしてしまうが、後述の T マクロでも適切に代入はされる
A系 (マルチバイト文字) SJIS等†
- 主に古い処理系ではこちらが使われる
- 半角は 1バイト 全角は 2バイトを使って表す
- 1byte なので 基本型は char
型 | 実体 | 構文 | 書き換え |
char* | char* | char* str = "A漢字"; | 可 |
const char* | const char* | const char * str = "A漢字"; | 不可 |
LPSTR | char* | LPSTR str = "A漢字"; | 可 |
LPCSTR | const char* | LPCSTR str = "A漢字"; | 不可 |
汎用型 TCHAR†
- W系とA系でプログラムが異なると汎用性がないため、defineで両方使えるようにする仕組み
- UNICODE が宣言されていたら wchar_t(2byte)に、それ以外ならchar(1byte)になる
TCHAR | char / wchar_t | |
CString | TCHAR* | const char からも作れる |
LPTSTR | TCHAR* | |
LPCTSTR | const TCHAR* | |
マクロ†
- W系とA系のコードの互換のためにさまざまな変換関数やマクロがある
L"ほげABCほげ" | wchar_t* | 半角 A 等も2バイトを使う文字になる |
TEXT(), _T | TCHAR* | TCHAR型に変換 (処理系によってchar/wchar_t が変わる) |
Unicode -> MBCS(MultiByte)†
- WideCharToMultiByte
- CAtlString
MBCS(MultiByte) -> Unicode†
|
|