ぼく用あれこれまとめ
wchar_t型(ワイド文字型)
最終更新:
bokuyo
-
view
wchar_t型(ワイド文字型)
- 勉強途中の項目につき、かなり内容の信憑性が怪しいです. 信じないでください.
wchar_t型("Neutral ANSI (Multi-byte Character) types/UNICODE types"(windows))
- よく見かけるLPCSTRやTCHARといったwindows特有のchar型.
- C++で使われる文字列はもともとASCII
- でもASCIIだと半角英数字しか使えない.
- そこでマルチバイト文字に対応するようになった.ANSIが規格したC++だからANSIコードに対応してるのかな?
- 最近はUNICODE系もよく使われるようになったため、文字コードをUNICODEに変更してもいいようにVC++では対応している.
- プログラマがANSIとUNICODEの切り替えのたびに何も考えず行えるようにするためのもの.
- 実際には, マクロとtypedefを使って<WinNT.h>に記述されている.
- Macのコンパイラではwchar_t型が使えないが, <WinNT.h>では_MACマクロ定数でMacでも使用できるよう書かれている.
- ワイド文字ってことで、"w"char_t型
- wchar_t 型はUTF-16の文字型
- MSDN - wcstombs_s、_wcstombs_s_l
- マルチバイト文字列とワイド文字列間を変換する関数
なぜ"LP"なのか?
- CHAR型のポインタをLPCHAR型としている.
- 他にも文字列型のポインタをLPSTR型としている.
- wchar_t型の命名規則でポインタを"LP"としているのはなぜだろう?
- CHAR型のポインタでもPCHARだったり, 文字列型のポインタでもPSTRだったりと, 多重定義している.
- いったい"LP"ってなんなんだろう?
- 実のところ, LPは"Long Pointer"の略みたい. MSDNの英語版とか見る限りそんな感じ.
とりあえずメモ程度に. 分類途中...
| Windows特有の型(Neutral ANSI/UNICODE) | C++標準のASCII(ANSI?)型 |
| CHAR | char |
| SHORT | short |
| LONG | long |
| PCHAR | CHAR * |
| PCH | CHAR * |
| PCCH | CONST CHAR * |
| NPSTR | CHAR * |
| PSTR | CHAR * |
| PZPSTR | PSTR * |
| PCZPSTR | CONST PSTR * |
| PCSTR | CONST CHAR * |
| PZPCSTR | PCSTR * |
| PZZSTR | CHAR * |
| PCZZSTR | CONST CHAR * |
| PNZCH | CHAR * |
| PCNZCH | CONST CHAR * |
| LPCH | CHAR * |
| LPCCH | CONST CHAR * |
| LPSTR | CHAR * |
| LPCSTR | CONST CHAR * |
| wchar_t型 | UNICODE | ASCII(標準) |
| TCHAR | WCHAR | char |
| PTCHAR | WCHAR * | char * |
| TBYTE | WCHAR | unsigned char |
| PTBYTE | WCHAR * | unsigned char * |
| LPCWCHAR | CONST WCHAR * |
| PCWCHAR | CONST WCHAR * |
| LPCUWCHAR | CONST WCHAR UNALIGNED * |
| PCUWCHAR | CONST WCHAR UNALIGNED * |
| PWCHAR | WCHAR * |
| LPWCH | WCHAR * |
| PWCH | WCHAR * |
| LPCWCH | CONST WCHAR * |
| PCWCH | CONST WCHAR * |
| LPWSTR | WCHAR * |
| NWPSTR | WCHAR * |
| PWSTR | WCHAR * |
| PZPWSTR | PWSTR * |
| PCZPWSTR | CONST PWSTR * |
| LPUWSTR | WCHAR UNALIGNED * |
| PUWSTR | WCHAR UNALIGNED * |
| LPCWSTR | CONST WCHAR * |
| PCWSTR | CONST WCHAR * |
| PZPCWSTR | PCWSTR * |
| LPCUWSTR | CONST WCHAR UNALIGNED * |
| PCUWSTR | CONST WCHAR UNALIGNED * |
| PZZWSTR | WCHAR * |
| PCZZWSTR | CONST WCHAR * |
| PUZZWSTR | WCHAR UNALIGNED * |
| PCUZZWSTR | CONST WCHAR UNALIGNED * |
| PNZWCH | WCHAR * |
| PCNZWCH | CONST WCHAR * |
| PUNZWCH | WCHAR UNALIGNED * |
| PCUNZWCH | CONST WCHAR UNALIGNED * |