創屋ぷれす

文字コード

文字コード、されど文字コード。

今日は先週のお仕事について、書かせていただきます。

今、ATLで文字列処理をしています。

ATLとはActive Template Library の略でC++クラスのライブラリの一種です。

先週は週の半分以上、文字コードと格闘していました。

Web関連のアプリでは避けては通れない問題ですね。

Shift-JIS⇔UTF-16とか、UTF-16⇔UTF-8間の変換ですね。

きっと、phpとかなら簡単なんだろうな~と思いつつ、Visual C++で格闘してました。

 UTF-8のファイルをバイナリモードでファイルポインタで読んだら、改行コードが見つからなかったり、

CString::GetLength()はバイト数を返すのか文字数を返すのかで悩んだりしてました。

今更ながら、C言語の文字列について悩んでました。

意外と大変なのが、CString⇔char*とかですね。

それもこれも、すべてUNICODEビルドの所為です。

結局今回は、時間的に難しいのであきらめました。

諦めたとたんにサクサク進みました。

とても悔しいです。

まってろよ~!UNICODEビルドめ~。いつか復讐してやる。

ということで覚書:

LPSTR = char*
LPCSTR = const char*
LPWSTR = WCHAR*
LPCWSTR = const WCHAR*
LPTSTR = TCHAR*
LPCTSTR = const TCHAR*

つまり

LP→ポインタ

C→const

TSTR→TCHAR

WSTR→WCHAR

STR→char

そして、TCHARはUNICODEでも通常ビルドでも使えて便利です。

ということで。

Comments are closed.