ぼく用あれこれまとめ
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 * |