将向量转换< wchar_t>为字符串c++

svmlkihl  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(184)

我尝试将向量转换<wchar_t>为字符串(然后打印它)。

std::string(vector_.begin(), vector_.end());

这段代码可以正常工作,但äöü ÄÖß除外。它们将被转换为:

���

我也尝试过转换为wstring并使用wcout打印,但我得到了同样的问题。
提前感谢!

cwtwac6a

cwtwac6a1#

我的解决方案:

首先,我将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

相关问题