Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道这是否足以在生产代码库中使用?
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; }
不,这还不够。
考虑wstring包含以下字符的 a (用于清楚起见的数字值) { 0x41, 0x1243, 0x62 }(即“A”,后跟 ETHIOPIC SYLLABLE QAA,如果您使用的是 Unicode,则后跟“b”)。
wstring
{ 0x41, 0x1243, 0x62 }
使用您的例程转换为 astring将导致包含{ 0x41, 0x43, 0x42 }或 'ACb' 的序列。可能不是您所期望或想要的。
string
{ 0x41, 0x43, 0x42 }
正如 DyP 所说 - 您没有进行任何转换,只是缩小了范围。