C++ 当我使用cout.tie(NULL)时,程序不会';我不会为我的代码打印任何东西,但如果我打印endl,程序就可以正常工作 #包括 使用名称空间std; 无效扫描线无限期() { //无限期扫描行 字符串输入线; while(getline(cin,input_line)) { cout

C++ 当我使用cout.tie(NULL)时,程序不会';我不会为我的代码打印任何东西,但如果我打印endl,程序就可以正常工作 #包括 使用名称空间std; 无效扫描线无限期() { //无限期扫描行 字符串输入线; while(getline(cin,input_line)) { cout,c++,C++,std::cout将在以下条件下刷新: 绑定到std::cout的输入流尝试读取输入。 你把领带取下来了 iostreams与stdio同步,因此有效地无缓冲。 您已禁用同步 缓冲区已满。 这需要更长的时间 程序正常结束。 那对你来说太晚了 有一个手动刷新(stream.flush()),当流std::flush;stream时调用该刷新。如果仅使用iostream,则可以将手动刷新添加到输出: #include <bits/stdc++.h> using namespac

std::cout
将在以下条件下刷新:

  • 绑定到
    std::cout
    的输入流尝试读取输入。
    你把领带取下来了

  • iostreams与stdio同步,因此有效地无缓冲。
    您已禁用同步

  • 缓冲区已满。
    这需要更长的时间

  • 程序正常结束。
    那对你来说太晚了


  • 有一个手动刷新(
    stream.flush()
    ),当流
    std::flush
    stream时调用该刷新。如果仅使用iostream,则可以将手动刷新添加到输出:

    #include <bits/stdc++.h>
    
    using namespace std;
    
    void scan_a_line_indefinitely()
    {
        // scan line indefinitely
        string input_line;
        while(getline(cin,input_line)) 
        {
            cout << input_line ; **// doesn't print if i use this line**
            //cout << input_line << endl; **// if i use this line, it works fine**
        }
    
    }
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(NULL);
        cout.tie(NULL);
        scan_a_line_indefinitely();
        return 0;
    }
    


    std::cout是的,你应该删除它们,除非你有很好的理由把它们放进去
    
    std::cout.flush();
    
    std::cout << /* the output */<< std::flush;