C ++ <codecvt> utf8字符串到utf16

时间:2018-02-06 01:16:41

标签: c++ windows visual-studio codecvt

我想将字符串转换为utf-16 wstring。 我写了以下代码:

std::string str = "aé"; // a test string with a French character

using cvt_type = std::codecvt_utf8_utf16<wchar_t>;
std::wstring_convert<cvt_type> converter;

std::wstring wstr = converter.from_bytes(str); // exception: std::range_error

上面的示例适用于包含unicode(例如std::string str="\u0061\u00e9")的字符串或没有特殊字符的字符串。 但我的第一个例子不起作用。

我收到以下异常:Microsoft C++ exception: std::range_error at memory location 0x00A9E7E4 程序停在那里:converter.from_bytes(str);

当我添加行str[1]=130; // é时,一切正常,所以我猜有签名的字符是问题的原因。 我需要使用一串有符号的字符,因为我想通过tcp套接字发送数据。

如何执行转换,以便我可以使用套接字发送数据?

提前致谢。

0 个答案:

没有答案