Win32APIを使用していると、文字列を扱うAPI関数で「LP〇〇STR」という型がよく出てきます。
初めて見ると「似たような名前で覚えづらい」と思いますが、実は簡単な法則で名前が決まっています。
この記事では、「LP〇〇STR」について名前の簡単な覚え方とそれぞれの型が持つ意味について紹介します。
LP〇〇STRの種類
Win32APIで使用されるLP〇〇STRは下表のとおり6種類存在します。
型名 | 型の意味 |
---|---|
LPSTR | char* |
LPCSTR | const char* |
LPWSTR | WCHAR* (wchar_t*) |
LPCWSTR | const WCHAR* (const wchar_t*) |
LPTSTR | TCHAR* |
LPCTSTR | const TCHAR* |
TCHARはプロジェクトのプロパティ(文字セット)に応じて「char」と「WCHAR (wchar_t)」が切り替わります。
![](https://untitled-note.com/wp-content/uploads/vcpp-lpstr-project-properties-1024x673.png)
文字セット | TCHARの型 |
---|---|
Unicode文字セットを使用する | WCHAR (wchar_t) |
マルチバイト文字セットを使用する | char |
プロジェクト作成時には「Unicode文字セットを使用する」が選択されているためデフォルトでは「TCHAR」は「WCHAR (wchar_t)」になります。
LP〇〇STRの覚え方
LP〇〇STRの名称は4つのブロックから構成されていて、それぞれ「LP」「無 or C」「無 or W or T」「STR」が指定されています。
![](https://untitled-note.com/wp-content/uploads/vcpp-lpstr-name.png)
「LP」と「STR」は固定なので、「C」がついているかいないか、「W」「T」がついているかいないか、だけでLP〇〇STRが何を表しているか簡単に理解することができます。
LP | 無 or C | 無 or W or T | STR | 型名 |
---|---|---|---|---|
LP | 無 | 無 (char) | STR | LPSTR |
LP | C (const) | 無 (char) | STR | LPCSTR |
LP | 無 | W (WCHAR) | STR | LPWSTR |
LP | C (const) | W (WCHAR) | STR | LPCWSTR |
LP | 無 | T (TCHAR) | STR | LPTSTR |
LP | C (const) | T (TCHAR) | STR | LPCTSTR |
終わりに
「LP〇〇STR」について名前の簡単な覚え方とそれぞれの型が持つ意味について紹介しました。
似たような名前の型が6種類あって覚えづらいと思いがちですが、簡単な規則を覚えればそれぞれが何を表しているか簡単に理解できるようになります。
この記事について誤っている点・不明な点などありましたらコメントまでお願いします。
コメント