C scanf关闭cin同步的坏处

Disadvantages of turning off cin synchronization with C scanf

我最近从this question那里学到了一些关于C++中cin的东西,它的速度与C中scanf的速度进行了比较。调用cin对象要慢得多而不是像往常一样调用 scanf 函数但是当我阅读接受的答案时,我明白如果我们调用 std::ios::sync_with_stdio(false);cinscanf 的同步将关闭并且 cin 在这种情况下,速度变得如此之快,甚至比scanf还要快。

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

如果您在同一个流(例如 stdin stream 与 scanfcin) 相关联,那么你最好让它们保持同步。

如果任何一个流仅使用一个 I/O 系列,您可以关闭同步(您仍然可以将 fscanf 用于特定文件,将 cin 用于 stdin例如,只要涉及单独的流)。

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

您可以完全控制整个代码堆栈,并且可以确保不使用 C API。

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