ぼく用あれこれまとめ

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 *


参考文献

記事メニュー
目安箱バナー