wstring_convert投掷变音符号

时间:2017-05-04 19:49:36

标签: c++ c++11 locale wstring

考虑以下代码:

#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?

0 个答案:

没有答案