Entry

プログラミングメモ - TCHAR 型の string 型を作る

2009年02月12日

この頃,Windows プログラミングの話ばっかになってるな。まあいいか。

Windows プログラミングでおなじみの型に TCHAR 型ってのがあります。これ,コンパイル時に _MBCS を定義しておくと char 型になって,_UNICODE を定義しておくと wchar_t 型になるってな便利(?)マクロです。まぁ,最近の Windows プログラミングでは,_MBCS を定義するってことはないんでしょうけど,切り替えられるようにはなっている,と。

で,TCHAR 型はそれなりに便利なんですけれど,C++ の場合は,ほとんど可変長の文字列クラスを使うわけで,素のまま LPTSTR 型とかを使うことは少なかったりします。可変長の文字列クラスってのは,標準クラスの std::string/std::wstring とか MFC の CString とかのこと。この点,CString は,MS 謹製のクラスなので,TCHAR 型にも対応しているんですけれど,MFC のライブラリとリンクしなくちゃいけません。一方,標準クラスの std::string はというと,_MBCS/_UNICODE でスイッチできる文字列型ってのがない。当たり前だけど。

あたしゃ近頃,なるべく汎用のクラスを使うように心がけているので,なるべくなら std::string/std::wstring を使いたいところ。仕方ないので,これまではこんな風にして,tstring なる型を typedef していたのでした。

#ifdef _UNICODE
typedef std::wstring tstring
#else
typedef std::string tstring
#endif

ただこれ,別にこんなことしなくてもいいんですよね。こうすればいい。

typedef std::basic_string<TCHAR> tstring

上のコードはちとまだ動作確認していないんですけど,多分これで動くはず。これで,標準の std::string/std::wstring でも TCHAR 型をコードの中で扱うことができると思います。

ま,ただそれだけなんですけどね。C++ と Windows プログラミングって,割とギャップが激しいもんで,コマコマと工夫する必要はあるようです。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN