混合 cout 和 wcout
正如您在“C Cookbook”中阅读的那样,以下代码可能会导致错误:
cout << s << std::endl; // You shouldn't be able to wcout << ws << std::endl; // run these at the same time
这是由于“流导向”的概念。创建流之后,但在对其执行任何操作之前,它是没有方向的。然而,一旦对它应用了宽字符输入/输出函数(如wcout),它就变成了面向宽字符的流,而一旦对其应用了字节输入/输出函数(如cout),它就变成了字节流。
C 标准规定“字节输入/输出函数不应应用于面向宽的流,宽字符输入/输出函数不应应用于面向字节的流。” (C 标准 [7.19.2])。
在您提供的代码中,cout 将 stdout 设置为面向字节的流。随后,根据标准,wcout 不应在 stdout 上使用。然而,实际上,某些编译器和环境可能允许在同一流上混合宽字符和面向字节的输出函数。此行为可能取决于编译器版本和平台。
以上是你可以混合使用 `cout` 和 `wcout` 而不会出现错误吗?的详细内容。更多信息请关注PHP中文网其他相关文章!