可以将 stdio 用于 C++ 程序,但在程序内的同一标准流中混合使用 iostream 与 stdio 时,可能会发生问题。例如,如果同时向 stdout 和 cout 写入,会发生独立缓冲,并产生不可预料的结果。如果从 stdin 与 cin 两者进行输入,问题会更加严重,因为独立缓冲可能会破坏输入。
要消除标准输入、标准输出和标准错误中的这种问题,就请在执行输入或输出前使用以下指令:它将所有预定义的 iostream 与相应的预定义 stdio 文件连接起来。
ios::sync_with_stdio(); |
因为在预定义流作为连接的一部分成为无缓冲流时,性能会显著下降,所以该连接不是缺省连接。可以在应用于不同文件的同一程序中同时使用 stdio 和 iostream。也就是说,可以使用 stdio 例程向 stdout 写入,并向连接到 iostream 的其他文件写入。可以打开 stdio 文件进行输入,也可以从 cin 读取,只要不同时尝试从 stdin 读取即可。