考虑以下代码:
#include <iostream>
#include <string>
#include <codecvt>
std::wstring string_to_wstring(const std::string& str)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
return converter.from_bytes(str);
}
int main()
{
std::string str = "abcä"; // without the "ä" it works
std::wstring wstr = string_to_wstring(str);
std::wcout << wstr << L"\n";
}
这引发了一个“bad_conversion”异常,这似乎是由变音符号引起的,因为如果我删除“ä”,一切都会有效。
我在前一段时间here找到了string_to_wstring函数的代码,直到现在它一直运行良好。主要是因为我从未遇到过任何变音符号。
我们可以修复此功能以使用任何字符吗?或者是否有更好的(更有效/更安全)的方法来转换字符串和wstring?