【发布时间】:2017-03-30 04:02:10
【问题描述】:
我正在为一个班级编写一个基于文本的游戏,并且在此问题之前我已经运行并运行了大部分游戏。
我今天打开它并尝试构建/运行它,它构建成功并且似乎正在运行,但是一些第一行代码是控制台的输出,直到我输入一些东西才会发生进入控制台,在提示打印之前不需要这样做:
这是我的主要内容的开始:
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?! |
===========================================================
而在今天之前,当我运行它时,它会输出“你叫什么名字?”,此时我会输入我的名字,然后它会打印欢迎词。
我觉得它一定很简单,因为它对我来说似乎是黑白的:为什么它要等待任何输入,而实际上我要求的第一件事就是向控制台输出一些东西?即使我将 cout 声明作为第一件事,它也可以这样工作。这是 XCode 的问题吗?
注意:对于文件中的每个 cin,它也会像这样处理输入,在我输入内容之前,问题和提示不会打印。
【问题讨论】:
-
这个问题一直被问到,但由于某种原因,我找不到合适的重复项来对其进行分类。
-
是的,在我看来这很常见,但我也找不到有效搜索此特定问题的方法。答案也对我不起作用。
-
也许 XCode 输出窗口不像普通的 TTY,可能有自己的缓冲策略。如果你从终端运行你的程序,你有同样的问题吗?
-
出于某种原因,我在尝试从终端运行时遇到了权限问题,但我也不热衷于此。但是我确实发现(我认为)我一直在使用 g++ 编译器,最近更新了 xcode,现在它没有使用相同的编译器。当我切换 IDE 并设法使用 g++ 编译器时,它又可以工作了。所以我猜不同的编译器需要刷新,而其他编译器不需要?这就是为什么当答案是刷新缓冲区时我如此困惑的原因,因为我以前从未这样做过。
-
当前版本的 Xcode 有问题:stackoverflow.com/questions/43116829/…