【C++】关闭cin,cout流同步的注意事项
通过如下语句关闭cin,cout流同步后,
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
之后的输出就只能使用cout来输出,不能混用C语言的输出函数如printf、puts等等,否则输出的顺序会被打乱。
总之:要么全使用C语言风格的输出函数输出,要么全用C++的cout输出。
debug两小时得出的教训。。。
错误案例
if (n % k) puts("NO");//不能puts与cout混用,要么全用puts,要么全用cout
else
{
dfs(1);
cout << (res == n / k ? "YES" : "NO") << '\n';
// if (res == n / k) cout << "YES" << '\n';
// else cout << "NO" << '\n';
}
正确写法1
全用C语言风格的输出函数,如puts或者printf,(C语言风格的输出函数可以混用,即puts和printf可以混用,但不能和C++风格的cout混用)
if (n % k) puts("NO");
else
{
dfs(1);
if (res == n / k) puts("YES");
else puts("NO");
}
或者
if (n % k) printf("NO\n");
else
{
dfs(1);
if (res == n / k) puts("YES");
else puts("NO");
}
正确写法2
全用cout输出
if (n % k) cout << "NO" << '\n';
else
{
dfs(1);
cout << (res == n / k ? "YES" : "NO") << '\n';
}

浙公网安备 33010602011771号