Моей функции GetErrorString () передается код ошибки, который является либо результатом WSAGetLastError (), либо одним из кодов ошибок, определенных в моей DLL, которые возвращаются, когда вызовы моих функций DLL не могут завершиться.
У меня есть массив std :: пар, которые хранят мои коды ошибок вместе с их постоянными символами * строки ошибок
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 (), тогда я должен использовать FormatMessage, чтобы получить строку ошибки как LPWSTR, а затем преобразовать ее в символ *, я нашел эту страницу:
Как мне преобразовать LPCTSTR в std :: string?
и попробовал эту душу, которая, очевидно, работает с LPCTSTR
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, результат всегда "???????????" и я не очень понимаю кодировку символов, чтобы найти решение.
Может кто-нибудь пролить свет на это? Спасибо.