我最近从这个关于c++中的cin
的问题中学到了一些东西,它的速度与C中的scanf
的速度进行了比较。调用cin
对象比调用scanf
函数慢得多,但当我阅读公认的答案时,我明白如果我们调用std::ios::sync_with_stdio(false);
,cin
与scanf
的同步被关闭,cin
的速度变得如此之快,甚至比scanf
更快。
那么,如果我们把它关掉,我们会遇到一些问题吗?如果是这样,有什么问题,在C中关闭cin
与scanf
的同步是好的吗?谢谢你的帮助。
如果你在同一流上使用两组I/O函数(头<cstdio>
或<stdio.h>
以及<iostream>
)(例如stdin
流与scanf
和cin
相关联),那么你最好让它们保持同步。
如果任何一个流只使用一个I/O族,你可以关闭同步(你仍然可以使用fscanf
与特定的文件,cin
与stdin
,例如,只要涉及单独的流)。
基本上在同时使用C API时会出现问题。许多奇怪的工件可能出现:丢失的数据,错误的顺序,意外的错误。
你有可能完全控制整个代码栈,你可以确保不使用C API。
遗憾的是,你的应用程序通常使用第三方库。其中一个可以使用C API输出一些数据流(特别是如果其中一个是C库)。由于您无法控制第三方库的行为,因此需要同步。