求助洛谷讨论区
  • 板块灌水区
  • 楼主robinyqc
  • 当前回复17
  • 已保存回复17
  • 发布时间2023/9/24 21:01
  • 上次更新2023/11/2 18:14:41
查看原帖
求助洛谷讨论区
338632
robinyqc楼主2023/9/24 21:01

这是段刚才想要的回复:

`sync_with_stdio` 是关闭 `iostream` 和 `stdio` 方法的**同步**输入输出(流同步),和 `stdin` 以及 `stdout` 两个流是否有效输入输出没有关系吧。

或者这么说吧。`sync_with_stdio(true)` 的时候,我 `cout` 先输出,输出到 `stdout` 的哪里,还是 `printf` 先输出,输出到 `stdout` 的哪里,是确定的。

而,关了之后,只有 `cout` 内部和 `printf` 内部是同步输出的。假设我混用了 `cout` 的 `printf`,两者的输出顺序和位置是混乱的。`cin`/`scanf` 同理。

而 `freopen` 是将 `stdin` 和 `stdout` 等流重定向到文件。

也就是说,`sync_with_stdio` 改变的是输入输出模式,`freopen` 改变的是输入输出位置。两者并无导致程序错误的关联。

但是,如果你混用了 `cin` 和 `scanf`,那么输出就会混乱。

所以 `sync_with_stdio(false)` 之后,只要只使用 `cin`/`cout` 或者 `scanf`/`printf` 就是没有问题的。可能某些附加文件操作会出现问题,但在 OI 中你关于文件操作基本只需要 `freopen` 就够了。

但是发不出来。到底哪里错误了?QwQ

2023/9/24 21:01
加载中...