wstring和string之间的STL字符串转换

时间:2013-08-08 12:24:30

标签: string stl wstring

我想知道这足以在生产代码库中使用吗?

std::wstring s2w(const std::string& s)
{
    std::wstring ws;
    ws.assign(s.begin(), s.end());
    return ws;
}

std::string w2s(const std::wstring& w)
{
    std::string s;
    s.assign(w.begin(), w.end());
    return s;
}

1 个答案:

答案 0 :(得分:0)

不,这还不够。

考虑包含以下字符的wstring(为清晰起见,使用数值) { 0x41, 0x1243, 0x62 }(那是'A',其次是ETHIOPIC SYLLABLE QAA,如果您使用的是Unicode,则后跟'b')。

使用您的例程转换为string将导致包含{ 0x41, 0x43, 0x42 }或'ACb'的序列。可能不是你所期望的 - 或者想要的。

正如DyP所说 - 你没有做任何转换,只是缩小。