私はTCHARを次のように文字列に変換しようとしています:
std::string mypath;
TCHAR path[MAX_PATH];
GetModuleFileName( NULL, path, MAX_PATH );
mypath
をpath
に設定する必要があります。単純なループを作成し、path[index]
をmypath
に連結しましたが、これは機能しますが、この方法は好きではありません。
私はC++の初心者ですが、たくさんのC#を実行しました。 「char」を渡すGetModuleFileName
の例を見てきましたが、気に入らないようです。 TCHAR
またはLPWSTR
が必要です。
TCHARは、文字セットの定義内容に応じて、charまたはwcharとして定義されるマクロです。 2008年以降のデフォルトでは、文字はユニコードに設定されています。このコードは、文字セットを変更した場合に機能します。
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR* bob ="hi";
string s = bob;
}
プロジェクト設定を右クリックして、以下を変更します
tCHARをUnicode文字セットとして使用する場合は、 wstring を使用します
私が本当にする必要があるとき、私は以下を使用します:
TCHAR infoBuf[32767]
GetWindowsDirectory(infoBuf, 32767);
//Let's convert to string...
wstring test(&infoBuf[0]); //convert to wstring
string test2(test.begin(), test.end()); //and convert to string.
お役に立てば幸いです。
パスを文字で指定する場合は、GetModuleFilenameA
を呼び出す必要があります。その関数は、LPSTR
の代わりにLPTSTR
を取ります。
文字列を取得または返すWin32関数のほとんどすべてに、A
(ANSI?)で終わるバージョンとW
(ワイド)で終わるバージョンがあります。
wcstombs
または_TCHAR*
関数を使用して、char*
からwcstombs_s
に変換することもできます。
http://msdn.Microsoft.com/en-us/library/5d7tc9zw%28v=vs.80%29.aspx