在我向控制台输入内容之前,C++ 程序 (XCode) 不会运行

标签 c++ xcode cin cout

我正在为一个类(class)写一个基于文本的游戏,在这个问题之前我已经运行了大部分游戏。

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

这是我主要的开始:

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

这是输出(在我输入 HELP? 并按下 enter 之前什么都没有)

HELP?
What's your name? 

===========================================================
|                   Welcome,    HELP?!                    |
===========================================================    

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

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

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

最佳答案

在 C++ 中写入 std::ostream 时,您必须在任何内容实际打印到控制台之前刷新缓冲区。您可以使用 std::endlstd::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;
}

关于在我向控制台输入内容之前,C++ 程序 (XCode) 不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43108336/

相关文章:

c++ - 从 cin 读取 int 数字,直到按下 ESC C++

c++ - 如何从已知像素值构建 QImage

ios - 以编程方式从 UINavigationBar 隐藏 UIBarButtonItem Swift2

ios - -fno-objc-arc 自动将编译器标志添加到许多使用保留和释放消息的文件

c++ - 如何提取字符串中任意位置的下一个整数?

c++ - 为什么看起来 cin 将我的 double 输入转换为整数? C++

c++ - 使用其他程序作为另一个程序的一部分

c++ - 在文件中写入字符数组时出现访问冲突

c++ - 子类中的默认 move 构造函数

ios - 在 iOS 5 SDK 上使用 iOS 4.0 模拟器调试应用程序