c++ - 宽阔的溪流和炭

标签 c++ widechar

我看到允许写 charstd::wostream (例如,std::wcout<<"looooool";)。

char怎么样了?更改为 wchar (如果发生这种情况)?

最佳答案

当您将一个char 或一个c 字符串(char *) 发送到宽流时,单个八位字节(字节)将使用widen 转换为wchar。 . std::string 没有自动转换。

您不能以这种方式将多字节 UTF-8 字符发送到宽流中,因为字节是一次一个地转换的。在默认语言环境中,没有从非 ascii 字符到宽字符的转换,因此转换将失败,使宽流进入错误状态。

是否利用此转换取决于您;标准允许它,至少对于字符和字符串文字,它对我来说似乎无害。但请注意,您发送到宽流的字符串对象必须是 std::wstring,而不是 std::string

关于c++ - 宽阔的溪流和炭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669577/

相关文章:

c++ - For 循环是否总是至少执行一次?

c++ - 如何使用折叠表达式创建 N 个浮点值的数组?

c - 打印大写字母的十六进制

c - wprintf : %p with NULL pointer

c - 尝试读取宽字符会给出 EOF

c++ - 在Windows 7上使用LibAo出现问题

java - 将 jpeg 转换为 gif 太长

Eclipse 中的 Java/C++ 项目管理?

ios - iOS 中的 iswalpha() 在 iOS 上返回的值与在 MacOS 上返回的值不同

c++ - 从单个定义创建字符串和宽字符串文字