我之前一直认为使用了 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 有效吗?
先行谢过诸位.