早上好,
我遇到了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;
}
如果缺少参数,则会正确显示错误消息。 但如果参数存在且程序继续测试输出:
COUT&LT;&LT; “测试”;
COUT&LT;&LT; “test2的”;
不显示...
我错过了一些明显的东西?
提前致谢!
答案 0 :(得分:11)
你需要用换行结束输出字符串,例如:`cout&lt;&lt; “测试\ n”``。原因是标准输出被缓冲,缓冲区在换行符上刷新。可能存在一种方法来刷新cout缓冲区而不输出换行符,但我不清楚它。可能包括访问底层的streambuf(通过rdbuf方法)。
答案 1 :(得分:3)
对于我来说,安装32位版本的Eclipse(Indigo 3.7)和32位Java JDK / JRE不起作用。我使用 Eclipse CDT / User / FAQ :
中更快的解决方案引自Eclipse CDT/User/FAQ - Eclipse console does not show output on Windows:
Eclipse控制台在Windows上不显示输出在Eclipse CDT中 Windows,正在运行或调试的程序的标准输出是完全的 缓冲,因为它没有连接到Windwos控制台,而是连接到 管。有关更多详细信息,请参阅错误173732。之后添加fflush调用 每个printf或在main的开头添加以下行 功能:
setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0);
答案 2 :(得分:1)
我有类似的问题。在我的情况下,如果从命令行运行而不是从eclipse控制台运行,程序将提供输出。解决方案是使用32位版本的eclipse而不是64位版本。
我读到这是一个错误。可能不是同一个问题。
答案 3 :(得分:0)
当我在微软网站上发现这个信息时,我也正在搜索这些信息 http://support.microsoft.com/kb/94227
我认为一个简单的方法是当你想强制刷新cout使用的内部缓冲区时使用std :: flush
*std::cout << ... << std::flush;*
答案 4 :(得分:0)
这会在您调试代码时发生,并且直到最后才看到输出。 使用
cout<<"what ever overloads"<< flush;
在stdout(控制台)上立即查看输出
答案 5 :(得分:-1)
嗨,经过一些类似的斗争,我发现,项目的属性环境PATH变量的第一个元素必须是&#34; C:\ MinGW \ bin;&#34;否则可能会使用错误的版本,尤其是在使用不同的编译器时。
答案 6 :(得分:-3)
尝试在每行的开头输出一个空格
cout&lt;&lt; “”&lt;&lt; .....