我尝试将向量转换<wchar_t>为字符串(然后打印它)。
std::string(vector_.begin(), vector_.end());
这段代码可以正常工作,但äöü ÄÖß除外。它们将被转换为:
���
我也尝试过转换为wstring并使用wcout打印,但我得到了同样的问题。提前感谢!
cwtwac6a1#
我的解决方案:
首先,我将vector<wchar_t>转换为utf16string,如下所示:
vector<wchar_t>
utf16string
std::u16string(buffer_.begin(), buffer_.end());
后来我用这个函数,我在这里的某个地方找到了:
std::string IO::Interface::UTF16_To_UTF8(std::u16string const& str) { std::wstring_convert<std::codecvt_utf8_utf16<char16_t, 0x10ffff, std::codecvt_mode::little_endian>, char16_t> cnv; std::string utf8 = cnv.to_bytes(str); if(cnv.converted() < str.size()) throw std::runtime_error("incomplete conversion"); return utf8; }
我没有编写转换函数,但它的工作正如预期的那样。有了它,我可以成功地将vector<wchar_t>转换为string
string
1条答案
按热度按时间cwtwac6a1#
我的解决方案:
首先,我将
vector<wchar_t>
转换为utf16string
,如下所示:后来我用这个函数,我在这里的某个地方找到了:
我没有编写转换函数,但它的工作正如预期的那样。有了它,我可以成功地将
vector<wchar_t>
转换为string