【C++】关闭cin,cout流同步的注意事项

通过如下语句关闭cincout流同步后,

    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

之后的输出就只能使用cout来输出,不能混用C语言的输出函数如printfputs等等,否则输出的顺序会被打乱。
总之:要么全使用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';
    }
posted @ 2025-02-27 15:29  Tshaxz  阅读(644)  评论(0)    收藏  举报
Language: HTML