使用C scanf关闭cin同步的缺点



我最近从这个关于c++中的cin的问题中学到了一些东西,它的速度与C中的scanf的速度进行了比较。调用cin对象比调用scanf函数慢得多,但当我阅读公认的答案时,我明白如果我们调用std::ios::sync_with_stdio(false);,cinscanf的同步被关闭,cin的速度变得如此之快,甚至比scanf更快。

那么,如果我们把它关掉,我们会遇到一些问题吗?如果是这样,有什么问题,在C中关闭cinscanf的同步是好的吗?谢谢你的帮助。

如果你在同一流上使用两组I/O函数(头<cstdio><stdio.h>以及<iostream>)(例如stdin流与scanfcin相关联),那么你最好让它们保持同步。

如果任何一个流只使用一个I/O族,你可以关闭同步(你仍然可以使用fscanf与特定的文件,cinstdin,例如,只要涉及单独的流)。

基本上在同时使用C API时会出现问题。许多奇怪的工件可能出现:丢失的数据,错误的顺序,意外的错误。

你有可能完全控制整个代码栈,你可以确保不使用C API。

遗憾的是,你的应用程序通常使用第三方库。其中一个可以使用C API输出一些数据流(特别是如果其中一个是C库)。由于您无法控制第三方库的行为,因此需要同步。

相关内容

  • 没有找到相关文章

最新更新