混合宽字符流和窄字符流:了解标准的要求
在 C 中,混合 cout(窄字符输出流)和 wcout(宽字符输出流)同一程序中的字符输出流)引发了有关流方向的问题。
C 标准 [27.4.1] 规定“对相应的宽字符流和窄字符流的操作”应遵循与混合操作相同的语义关于 C 标准中的文件。参考C标准中的[7.19.2],很明显字节输入/输出函数不应该应用于面向宽的流,并且宽字符输入/输出函数不应该应用于面向字节的流。
这表明应避免在同一程序中混合 wcout 和 cout。然而,也有例外。例如,在 Visual C 10.0 中,据报道负责维护流方向的 fwide 函数尚未实现。这意味着混合 cout 和 wcout 可以在该环境中正常运行。
类似地,libstdc (libstdc /11705) 中的一个“bug”允许通过调用 std 来混合面向字节和面向宽的 I/O ::ios::sync_with_stdio(假)。然而,需要注意的是,这种行为是无法保证的,并且可能会因编译器和操作系统的不同而有所不同。
因此,虽然标准建议不要混合 cout 和 wcout,但必须意识到潜在的潜在风险异常并确保在使用不同编译器或环境时正确处理流方向。
以上是你能在不违反标准的情况下在 C 中混合使用'cout”和'wcout”吗?的详细内容。更多信息请关注PHP中文网其他相关文章!