Code :: Blocks不会在没有std :: endl的情况下打印控制台文本

时间:2016-02-04 23:12:00

标签: c++ codeblocks iostream

我正在使用 Code :: Blocks 15.12 ,我的编译器是 GNU GCC 。 我将于2013年12月26日在YouTube上关注C ++教程。 当我尝试使用与教程中的人相同的代码时:

#include <iostream>

using namespace std;

int main(){

cout << "Hello World!";

return 0;


}

我得到一个弹出窗口说:

  

这个项目似乎还没有建成。你想现在建造吗?

然而。当我运行在启动新控制台应用程序时生成的标准代码时:

#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}

它对我来说完美无瑕!

我是否仍然能够在双引号之后没有<< endl;的情况下运行,或者自2013年以来C ++中的某些内容发生了变化,以至于它不再是有效的代码了?

我没有收到任何错误。

我一直在努力找出问题所在,其他人也有同样的弹出窗口,但是他们的情况与我的情况不符。

2 个答案:

答案 0 :(得分:2)

我怀疑它是因为Code :: Blocks在程序运行后在Windows中发出std::system("pause")命令。从std::flush documentation

开始
  

此操纵器可用于产生不完整的输出线   立即,例如当显示长时间运行的进程的输出时,   记录多个线程的活动或记录程序的活动   可能会意外崩溃。 std :: cout的显式刷新也是   在调用std :: system之前必要的,如果生成的进程   执行任何屏幕I / O(一个常见的例子是std :: system(&#34; pause&#34;)on   视窗)即可。 [强调我的]

std::endl做两件事:它插入一个换行符,然后将输出流刷新到控制台。这就是为什么您只在包含std::endl的版本中看到您的文字的原因。

所以Code :: Blocks没有什么问题,你必须确保在程序终止之前输出std::flushstd::endl

答案 1 :(得分:-2)

Code :: Blocks是一个很棒的IDE。应用程序需要先构建才能运行。只需先构建它,它将按预期运行。这是适用于旧版本的相关主题: http://forums.codeblocks.org/index.php?topic=16045.0 顺便说一句,15.12是候选版本。尝试升级到16.01。