Oracle® Solaris Studio 12.4:C++ 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

13.3.10 结合使用 iostreamstdio

可以将 stdio 用于 C++ 程序,但在程序内的同一标准流中混合使用 iostreamstdio 时,可能会发生问题。例如,如果同时向 stdoutcout 写入,会发生独立缓冲,并产生不可预料的结果。如果同时从 stdincin 进行输入,问题会更加严重,因为独立缓冲可能会导致输入不可用。

要消除标准输入、标准输出和标准错误中的这种问题,就请在执行输入或输出前使用以下指令。它将所有预定义的 iostream 与相应的预定义 stdio 文件连接起来。

ios::sync_with_stdio();

因为在预定义流作为连接的一部分成为无缓冲流时,性能会显著下降,所以该类型的连接不是缺省连接。您可以在同一程序中使用应用于不同文件的 stdioiostream,也就是说,您可以使用 stdio 例程写入到 stdout,同时还可以写入连接到 iostream 的其他文件。可以打开 stdio 文件进行输入,也可以从 cin 读取,只要不同时尝试从 stdin 读取即可。