Linux报错笔记:关于endl

今天程序找bug的时候发现了一个奇奇怪怪的问题

    cout << endl << "-------" << endl;
    cout << "Start processing sequence ..." << endl;
    cout << "Images in the sequence: " << nImages << endl << endl;
    cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";

  源程序本身有其他问题,但是双线程下这段代码在程序运行后只输出

-------
Start processing sequence ...
Images in the sequence: 1242

          两个线程总有一个线程的并不能显示下面这个输出

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

         不知道为什么程序卡在这里,后来发现是endl的锅

         endl有两个意思,首先是将“\n”写入输出流,第二个是调用flush函数,刷新缓冲区,如果去掉endl的话,之前的内容还会在缓冲区,那就不会立刻打印出来,然后程序在下一段还没来得及打印的时候就崩了,所以一直不显示这个输出,加了endl就能正常显示了。

 

posted @ 2020-07-16 16:09  九里九里  阅读(383)  评论(0)    收藏  举报