私の関数GetErrorString()には、WSAGetLastError()の結果であるエラーコード、またはDLLで呼び出されたときに返されるDLLに定義されているエラーコードのいずれかが渡されます完了できません。その後、私はエラーを取得するためのFormatMessageを使用する必要がありますLPWSTRをchar */stringに変換する
私は)自分のconstのchar *エラー文字列
std::pair<int, const char*> errorCodeArray[12] =
{
std::pair<int,char*>(0,"Success"),
std::pair<int,char*>(1,"Connection Error"),
std::pair<int,char*>(2,"Request Timed Out"),
// ..etc
};
エラーコードは、WSAGetLastError(からのものである場合
と一緒に私のエラーコードを格納するのstd ::ペアの配列を持っていますLPWSTRとして文字列、その後のchar *に変換し、私はこのページが見つかりました:How do I convert from LPCTSTR to std::string?
を明らかにし、LPCTSTR
で動作するこのsoultionを試してみましたint size = WideCharToMultiByte(CP_ACP, 0, errCode, -1, 0, 0, NULL, NULL);
char* buf = new char[size];
WideCharToMultiByte(CP_ACP, 0, errCode, -1, buf, size, NULL, NULL);
std::string str(buf);
delete[] buf;
return str.c_str();
LPWSTRでは動作しないようですが、結果は常に "??????????"私は解決策を理解するのに十分な文字エンコーディングを実際に理解していません。
誰もがこれにいくつかの光を当てることができますか?ありがとう。変換の必要性を回避するために
FormatMessageA()
FormateMessageW()
使用FormatMessageA()
明示:
LPTSTRの_changes_を変換するために機能します。 FormatMessageがFormatMessageWのマクロである場合、stringの代わりにwstringを使用できませんか? –