inline std::wstring StringToWString(const std::string& str)
{
int len = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);
if (0 == len) return L"";
std::wstring buff(len, 0);
if (::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, (LPWSTR)buff.data(), len) == 0) return L"";
if (buff[buff.size() - 1] == '\0')
buff.erase(buff.begin() + (buff.size() - 1));
return buff;
}
inline std::string WStringToString(const std::wstring& str)
{
int nNeedSize = WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, NULL, 0, NULL, NULL);
if (0 == nNeedSize) return "";
std::string buff(nNeedSize, 0);
if (WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, (LPSTR)buff.data(), nNeedSize, NULL, NULL) == 0) return "";
if (buff[buff.size() - 1] == '\0')
buff.erase(buff.begin() + (buff.size() - 1));
return buff;
}
任意类型转 std::wstring
template<class T>
inline std::wstring ToWString(const T& arg)
{
std::wstringstream temp;
temp << arg;
return temp.str();
}