我目前正在使用Windows API的方法MultiByteToWideChar
和WideCharToMultiByte
来在std::string
和std::wstring
之间进行转换。
我正在将我的代码从Windows依赖中移除,因此我想知道上述方法的替代方法。具体来说,使用Boost将是很棒的选择。我可以使用哪些方法?以下是我目前正在使用的代码:
const std::wstring Use::stow(const std::string& str)
{
if (str.empty()) return L"";
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
std::wstring wstrTo( size_needed, 0 );
MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
return wstrTo;
}
const std::string Use::wtos(const std::wstring& wstr)
{
if (wstr.empty()) return "";
int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL);
std::string strTo( size_needed, 0 );
WideCharToMultiByte (CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL);
return strTo;
}
std::mbstowcs
和std::wcstombs
怎么样? - Some programmer dude