标准输出奇怪的行为
Standard output strange behavior
本文关键字:标准输出 更新时间:2023-10-16
我在使用Eclipse cdt时遇到问题,并且我正面临一个奇怪的行为:
cout << "Hello world" << endl;
aFunction();
// The output here is Hello world
// END
当我取下endl
时,输出没有
cout << "Hello world";
aFunction();
// No output
// END
当我稍后放置endl
时,它运行良好:
cout << "Hello world";
aFunction();
cout << endl;
// output is Hello world
// END
现在,我无法提供函数代码,因为它将花费我一千行的时间。
然而,我用一个不做void toto(){}
的函数尝试了这个,并没有出现这个奇怪的事情。
cout << "Hello world";
toto();
// Gives me Hello world
// END
我想知道的是,是什么导致了这种情况??
编辑:使用foo的测试是单独测试的(没有其他指令),在其他测试中,我初始化了一个结构,并将其作为参数提供给aFunction
。这个函数使用了一些元编程,我需要展示很多代码来让你理解它
当写入流时,它们通常被缓冲,这意味着输出存储在内部缓冲区(内存块)中。当缓冲区已满时,或者当流被明确告知时,缓冲区就会被刷新,输出实际上会写入文件或设备。
std::endl
I/O操纵器不仅添加了一个换行符,还刷新流中的缓冲区,从而实际写入缓冲输出。
std::endl
添加一个新行并刷新给它的流。
您可以使用std::flush
刷新流。
尝试调用
std::ostream::flush()
以刷新流缓冲区。这项工作是由endl
完成的,当您将其取下时,消息会在缓冲区中等待就绪,以便在缓冲区已满或出现新行时进行刷新。
所以如果你想的话,你可以自己冲洗。
相关文章:
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 使用提升过程获取 shell 命令的标准输出
- 将标准输出重定向到ostream
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- 在程序执行期间从标准输出重定向到自定义流
- 标准输出C++意外行为
- 防止 qDebug() 写入标准输出
- C++ - <<运算符重载,链表 - 地址而不是标准输出
- 有没有办法知道C++中将打印到标准输出的大小?
- 最后推迟标准输出
- 得到~对标准输出没有回应~在黑客排名问题上
- Win32 GUI C(++) 应用将标准输出和标准输出重定向到磁盘上的同一文件
- 在标准输出中执行打印会导致数组中随机分配值
- 捕获远程进程子进程的标准输出
- 使用 QProcess 读取标准输出
- 如何将值发送到标准输出流并在另一个程序中访问这些值
- 无法使用创建进程重定向标准输出
- HackerRank说~对标准输出没有回应~.C++
- 记录标准输入和标准输出
- 我可以重定向两个子进程的标准输出吗?