C++程序(XCode)在我进入控制台之前无法运行

C++ program (XCode) not running until I enter something into console

本文关键字:控制台 运行 程序 XCode C++      更新时间:2023-10-16

我正在为一个类编写一个基于文本的游戏,在这个问题之前,我运行了大部分游戏并工作了它。

我今天打开它并尝试构建/运行它,它已成功构建并且似乎正在运行,但是一些第一行代码是输出到控制台的,直到我在控制台中输入一些内容之前它们才会发生,这在提示打印之前应该是不必要的:

这是我的主要内容的开始:

int main() {
string name;
cout << fixed << setprecision(2) << "What's your name? ";
cin >> name;
cin.ignore(INT_MAX, 'n');...

这是输出(在我输入帮助之前什么都没有?并按回车键)

HELP?
What's your name? 
===========================================================
|                   Welcome,    HELP?!                    |
===========================================================    

而在今天之前,当我运行它时,它会输出"你叫什么名字?",此时我会输入我的名字,然后它会打印欢迎。

我觉得它一定是简单的事情,因为它对我来说看起来如此黑白分明:为什么它会等待任何输入,而本质上我要求它做的第一件事就是将一些东西输出到控制台?即使我把 cout 语句作为第一件事,它也可以通过这种方式工作。这是XCode问题吗?

注意:它也像这样对待文件中的每个 cin 的输入,在我输入内容之前不会打印问题和提示。

在 C++ 中写入std::ostream时,必须先刷新缓冲区,然后才能将任何内容实际打印到控制台。您可以使用std::endlstd::flush执行此操作。

请参阅此处的std::ostream参考。

例:

#include <iostream>
#include <string>
int main() {
std::string s;
std::cout << "Flushed with a line break." << std::endl;
std::cin >> s;
std::cout << "Flushed with no line break." << std::flush;
std::cin >> s;
return 0;
}