将iostream与stdio同步

veh*_*zzz 3 c c++ io stl legacy-code

我正在尝试将iostream添加到遗留代码中,因此希望同步这两个库.根据这篇文章,我应该使用std :: ios_base :: sync_with_stdio.

现在,我想知道它是如何在实践中使用的(请举例说明),我应该注意的副作用.

谢谢

Kea*_*eks 9

默认情况下,流是同步的,它保证按标准工作,您无需执行任何操作.sync_with_stdio仅在此处禁用同步,如果您愿意.

从你提到的文章:

对于预定义的流,混合stdio和iostream是安全的.例如,您可以在同一程序中安全地使用stdin和cin; C++标准保证它将按照您天真的预期方式工作.

唯一的缺点是潜在的性能损失(我想这就是为什么它可以被禁用).


Cli*_*ord 5

正如 TheSamFrom1984 所说,同步是默认设置,所以应该不会有问题。然而,只有当两个库都在操作相同的流时,同步才相关。这通常发生在分别使用 cin/cout/cerr 和 stdin/stdout/stderr 时。但是,除了重用遗留代码时,我几乎没有理由需要同时使用两者。

当我第一次开始使用 C++ 时,我发现自己这样做是因为我经常知道如何使用 stdio 做某事,但不知道如何使用 iostream 来做,但更好的方法是弄清楚如何在一个或其他,但不是两者兼而有之。