我之前一直认为使用了 std::ios::sync_with_stdio(0)
和 std::cin.tie(0)
以后就不能直接通过 freopen(..., ..., ...)
来进行文件 I/O 了,所以一直使用 ifstream
与 ofstream
进行文件 I/O(这真令人难过).
而今天我运行以下代码:
signed main() {
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
std::ios::sync_with_stdio(0);
cin.tie(0);
}
它意外地跑出了正确的结果.这和我两年以来形成的三观不统一,希望有人告诉我:
- 这是一个 UB 吗?
- 这是一个巧合吗?
- 在正式场合这样使用,关闭同步达到的优化效果还有吗?
- 这样 I/O 有效吗?
先行谢过诸位.