我正在为一个班级写一个基于文本的游戏,并且在此问题出现之前,我已经让大部分游戏都在运行和工作。
我今天打开它并尝试构建/运行它,它已成功构建并且似乎正在运行,但是第一行代码中的一些是输出到控制台,它们不会发生直到我在控制台中输入一些内容,在提示打印完之后不应该这样做:
这是我主要的开始:
int main() {
string name;
cout << fixed << setprecision(2) << "What's your name? ";
cin >> name;
cin.ignore(INT_MAX, '\n');...
并输出输出(直到我输入HELP并按下回车键才输入)
HELP?
What's your name?
===========================================================
| Welcome, HELP?! |
===========================================================
而在今天之前,当我运行它时,它会输出&#34;你的名字是什么?&#34;,此时我输入了我的名字,然后它打印欢迎。
我觉得它必须是简单的东西,因为它对我来说似乎是黑白的:为什么它会等待任何输入什么时候我要问的第一个真正的东西是输出一些东西到控制台?即使我把cout语句作为第一件事,它也是这样工作的。这是一个XCode问题吗?
注意:它也会对文件中的每个cin处理这样的输入,在我输入内容之前,问题和提示都不会打印出来。
答案 0 :(得分:4)
在C ++中写入std::ostream
时,必须在实际打印到控制台之前刷新缓冲区。您可以使用std::endl
或std::flush
。
请参阅std::ostream
参考here。
示例:
#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;
}