Code::Blocks 不打印没有 std::endl 的控制台文本
Code::Blocks does not print console text without std::endl
我正在使用 Code::Blocks 15.12,我的编译器是 GNU GCC 。
我正在关注 2013 年 12 月 26 日在 YouTube 上发布的 C++ 教程。
当我尝试使用与教程中的人相同的代码时:
#include <iostream>
using namespace std;
int main(){
cout << "Hello World!";
return 0;
}
我收到一个弹出窗口,上面写着:
It seems that this project has not been built yet. Do you want to build it now?
不过。当我 运行 启动新控制台应用程序时生成的标准代码:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
它对我来说完美无缺!
在双引号后没有 << endl;
的情况下,我是否仍然能够 运行,或者自 2013 年以来 C++ 中发生了一些变化,以至于它不再是有效代码?
我没有收到任何错误。
我一直在想问题是什么,其他人也有同样的弹窗,但他们的情况与我的不符。
Code::Blocks 很棒 IDE。一个应用程序需要先构建,然后才能 运行。只需先构建它,它就会按预期 运行。这是适用于旧版本的相关线程:
http://forums.codeblocks.org/index.php?topic=16045.0
顺便说一句,15.12 是候选版本。尝试升级到 16.01。
我怀疑这是因为 Code::Blocks 在您的程序运行后在 Windows 中发出了 std::system("pause")
命令。从这个 std::flush documentation:
This manipulator may be used to produce an incomplete line of output
immediately, e.g. when displaying output from a long-running process,
logging activity of multiple threads or logging activity of a program
that may crash unexpectedly. An explicit flush of std::cout is also
necessary before a call to std::system, if the spawned process
performs any screen I/O (a common example is std::system("pause") on
Windows). [emphasis mine]
std::endl
做了两件事:它插入一个换行符,然后将输出流刷新到控制台。这就是为什么您只能在包含 std::endl
.
的版本中看到您的文本
所以 Code::Blocks 并没有什么错,你只需要确保在程序终止之前输出 std::flush
或 std::endl
。
我正在使用 Code::Blocks 15.12,我的编译器是 GNU GCC 。 我正在关注 2013 年 12 月 26 日在 YouTube 上发布的 C++ 教程。 当我尝试使用与教程中的人相同的代码时:
#include <iostream>
using namespace std;
int main(){
cout << "Hello World!";
return 0;
}
我收到一个弹出窗口,上面写着:
It seems that this project has not been built yet. Do you want to build it now?
不过。当我 运行 启动新控制台应用程序时生成的标准代码:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
它对我来说完美无缺!
在双引号后没有 << endl;
的情况下,我是否仍然能够 运行,或者自 2013 年以来 C++ 中发生了一些变化,以至于它不再是有效代码?
我没有收到任何错误。
我一直在想问题是什么,其他人也有同样的弹窗,但他们的情况与我的不符。
Code::Blocks 很棒 IDE。一个应用程序需要先构建,然后才能 运行。只需先构建它,它就会按预期 运行。这是适用于旧版本的相关线程: http://forums.codeblocks.org/index.php?topic=16045.0 顺便说一句,15.12 是候选版本。尝试升级到 16.01。
我怀疑这是因为 Code::Blocks 在您的程序运行后在 Windows 中发出了 std::system("pause")
命令。从这个 std::flush documentation:
This manipulator may be used to produce an incomplete line of output immediately, e.g. when displaying output from a long-running process, logging activity of multiple threads or logging activity of a program that may crash unexpectedly. An explicit flush of std::cout is also necessary before a call to std::system, if the spawned process performs any screen I/O (a common example is std::system("pause") on Windows). [emphasis mine]
std::endl
做了两件事:它插入一个换行符,然后将输出流刷新到控制台。这就是为什么您只能在包含 std::endl
.
所以 Code::Blocks 并没有什么错,你只需要确保在程序终止之前输出 std::flush
或 std::endl
。