cout上没有控制台输出

Bea*_*sly 6 c++ eclipse console flush

早上好,

Eclipse IDE for C/C++ Developers出了问题.

我正在编写一个用于转换字符串的小工具.虽然测试某些点eclipse停止提供控制台输出.例如:
cout<<"test";
不显示.

但并不是每个地方......另一个例子:

// File path as argument
int main(int argc, char* argv[]) {
if (argc != 2) {
    cout
            << "ERROR: Wrong amount of arguments! Only one allowed...\n";
    cout << "\n" << "Programm closed...\n\n";
    exit(1);
}

CommandConverter a(argv[1]);
cout<<"test";
a.getCommandsFromCSV();
cout<<"test2";

return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果缺少参数,则会正确显示错误消息.但如果参数存在且程序继续测试输出:

COUT << "测试";
COUT << "测试2";

没有显示......
我错过了一些明显的东西?

提前致谢!

zvr*_*rba 11

你需要用换行结束输出字符串,例如:`cout <<"test \n"``.原因是标准输出被缓冲,缓冲区在换行符上刷新.可能存在一种方法来刷新cout缓冲区而不输出换行符,但我不清楚它.可能包括访问底层streambuf(通过rdbuf方法).

  • 更好的是使用`endl` (12认同)
  • Ismail说,你试过std :: endl吗?实际上这应该是输出缓冲区.'\n'不是. (5认同)
  • @Beasly,因为输出被刷新到操作系统,并且当程序退出时,操作系统负责刷新缓冲区(即显示到控制台).`endl`*修复*你的问题的原因是,除了刷新操作系统,操作系统缓冲区*可能*刷新,因为我问到在gdb中单步执行是依赖`cout`s进行调试是一个相当基本的方法,并容易出现诸如你遇到的情况,使用调试器逐步确定是否有效的方法...... (2认同)