gpt4 book ai didi

c++ - 自动 cout 冲洗

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:46 29 4
gpt4 key购买 nike

你好,

我编写了一个 Java 程序,它使用 Process 对象和 Runtime.exec() 函数调用启动多个 C++ 编写的程序。 C++ 程序使用 cout 和 cin 作为输入和输出。 Java程序从C++程序的输入流和输出流中发送信息和读取信息。

然后我有一个字符串缓冲区,它通过将 C++ 程序的输入和输出附加到字符串缓冲区来构建程序的典型交互。问题是所有输入调用都被追加,然后所有输出调用都被发布。例如,StringBuffer 的实例可能是这样的...

2
3
Please enter two numbers to add. Your result is 5

程序在标准控制台上看起来像这样

Please enter two numbers to add. 2
3
Your result is 5

问题是我得到的输入和输出的顺序都乱七八糟,因为除非 C++ 程序调用 cout.flush() 函数,否则在给出输入之前不会写入输出。

有没有办法自动刷新缓冲区,这样 C++ 程序就不必担心调用 cout.flush()?类似于 C++ 程序是一个与命令控制台交互的独立程序,程序员并不总是需要 cout.flush(),命令控制台仍然在输入之前输出数据。

谢谢,

最佳答案

以防有人来寻找一种方法来将 cout 设置为始终刷新。在进行一些核心转储调查等时,这可能是完全公平的。

查看 std::unitbuf

std::cout << std::unitbuf; 

在程序的开头。

默认情况下,它会在每次插入时刷新。

关于c++ - 自动 cout 冲洗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019983/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com