Win32APIで使用する文字列『LP○○STR』

Win32APIの関数を使っていると「LPWSTR」「LPCSTR」などあまり見慣れない型を使っていることがありますね。

この記事では、そんな紛らわしい「LP○○STR」について解説を行います。

LP○○STRとは

Win32APIで使用される「LP○○STR」は以下の6種類です。

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

それぞれ「LP」は「long pointer」の略、「C」は「const」の略、「T」は「TCHAR」の略、「W」は「WCHAR」の略です。

LPSTR、LPCSTR

LPSTR、LPCSTRは「char*」「const char*」のことです。

こちらについては取り立てて説明するまでもありません。

LPWSTR、LPCWSTR

LPWSTR、LPCWSTRは「WCHAR*」「const WCHAR*」のことです。

WCHARというのは「wchar_t」という型のことで、Unicode文字を使用するための2byteの型です。

LPTSTR、LPCTSTR

LPTSTR、LPCTSTRは「TCHAR*」「const TCHAR*」のことです。

TCHARはプロジェクトの文字セットにより「char」と「WCHAR」が切り替わります。

文字セット 適用される型
Unicode文字 WCHAR
マルチバイト文字 char

文字セットが変わってもコードを変更する必要がないため、LPTSTR、LPCSTRが使用されている関数も多くあります。

ちなみにLPTSTR、LPCTSTRはプロジェクトの文字セットによっては下表のようにLPSTR、LPCSTR、LPWSTR、LPCWSTRに置き換えることも可能です。

Unicode文字 マルチバイト文字
LPTSTR LPWSTR LPSTR
LPCTSTR LPCWSTR LPCSTR

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です