我对面向 C/C++ 开发人员的 Eclipse IDE 有疑问。
我正在编写一个用于转换字符串的小工具。在测试某个点时 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;
}
如果缺少参数,错误消息会正确显示。 但如果参数存在并且程序继续测试输出:
cout<<"test";
计算<<"test2";
不显示...
我遗漏了一些明显的东西?
您需要以换行符结束输出字符串,例如:`cout << "test\n"``. The reason is that the standard output is buffered and the buffer is flushed on newline. There probably exists a way to flush the cout buffer without outputting a newline, but I don't know it by heart. Probably includes access to the underlying streambuf (via the rdbuf method).
对于我来说,安装 32 位版本的 Eclipse (Indigo 3.7) 和 32 位 Java JDK/JRE 不起作用。我使用 Eclipse CDT/User/FAQ 中更快的解决方案:
引自 Eclipse CDT/用户/常见问题解答 - Eclipse 控制台在 Windows 上不显示输出:
Eclipse 控制台在 Windows 上不显示输出 在 Eclipse CDT 上 Windows,正在运行或调试的程序的标准输出是完全 缓冲,因为它没有连接到 Windwos 控制台,而是连接到 管道。有关更多详细信息,请参阅错误 173732。之后添加 fflush 调用 每个 printf 或在 main 的开头添加以下行 功能:
setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0);
我也有类似的问题。就我而言,如果从命令行运行该程序将给出输出,但不是从 Eclipse 控制台运行。解决方案是使用 32 位版本的 eclipse 而不是 64 位版本。
我读到这是一个错误。但可能不是同一个问题。
当我在微软网站上找到这个信息时,我也在寻找这个信息 http://support.microsoft.com/kb/94227
我认为一个简单的方法是当你想强制刷新 cout 使用的内部缓冲区时使用 std::flush
*std::cout << ... << std::flush;*
当您调试代码并且直到最后才看到输出时,就会发生这种情况。 使用
cout<<"what ever overloads"<< flush;
立即在 stdout(控制台)上查看输出
嗨,经过一些类似的斗争,我发现,项目属性环境 PATH 变量的第一个元素必须是“C:\MinGW in;”否则可能会使用错误的版本,特别是如果您使用不同的编译器。
尝试在每行的开头输出一个空格
cout<< " " << .....