はかせのラボ

私の頭の中を書いていく雑記ブログです

DirectX C++の文字列

あいさつ

どうも、はかせです。
今回はしばらくぶりのC++です。

ここ数日あーでもない、こーでもないと
悪戦苦闘していたのでまとめておこうと思います。

C++文字

C++には文字を扱う型が3種類あります。(多い・・・)
①char
マルチバイト文字を扱う型です。
マルチバイト文字とはMSDN曰く
「1バイトもしくは2バイトで表す文字」
だそうです。
②wchar_t
ワイド文字を扱う型です。
ワイド文字とは常に16ビットつまり2バイトで表す文字のことです。
③TCHAR
汎用文字列です。
TCHARは以下のように定義されています。

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

UNICODEが定義されているときはWCHAR、
いないときはcharになるそうです。

まぁ一種のマクロのようなものみたいですね。
私はこの存在を大分後になって知ったので主にwchar_tを使っています。
ですが、使えるならこれを使うのが安牌だと思います。

C++文字列

C++には文字列を扱う型が2種類あります。

①std::string
char型の文字列を表します。
②std::wstring
wchar_t型の文字列を表します。
(TCHARのstringがない理由はわかりません・・・マクロっぽい動きだから出来ないのかな?)
これらにはインスタンス、ポインタどちらを入れても動くようです。

LPとかCとか

LPCTSTRとかLPSTRとか見たことあると思います。
これはそれぞれが意味を持っています。
LP = ポインタ
C = const
TSTR = TCHAR
STR = char
WSTR = WCHAR(wchar_t)

という意味です。

あとがき

今回はC++の文字周りをまとめてみました。

基本はTCHARで操作して値の保存はstringかwstring使っとくと、
よくわからない詰まり方はしにくいと思います。

それでは今回はこの辺でノシ