C ++ cout然后cin挂

时间:2017-04-04 11:20:58

标签: c++ cin cout

#include <iostream>
#include <string>
using namespace std;

void doOneSet();

int main() {
    srand(time(0));
    doOneSet();

    return 0;
}

void doOneSet() {
    int answer;
    for (int i = 0; i < 5; i++) {
        cout << (rand() % 100) << " + " << (rand() % 101) << ": ";
        cin >> answer;
    }
}

以下代码挂起,从不输出cout语句,也没有得到cin语句。当我结束cin语句如下,它工作正常,但我不知道为什么。我希望输入在同一行,而不是在下一行。

cout << (rand() % 100) << " + " << (rand() % 101) << ": " << endl;

我以前很容易做到这一点,但由于某些原因我现在遇到问题,不知道为什么。提前谢谢!

2 个答案:

答案 0 :(得分:1)

我知道这是旧的,但对于未来的搜索者,我只是遇到了这个问题。 我正在设置一台新 PC 并安装了 VS2019 然后想起我也需要安装 VS2013 以支持旧版构建。一个简单的 Hello World 应用程序会挂在 cout 上。

我将 VS2019 安装重新运行为修复,并且在重新启动后,cout 的行为符合预期。

答案 1 :(得分:-1)

我无法在g ++ 4.9.4中重现您的行为,但我有一个想法。您可以尝试使用 fflush 功能刷新流的缓冲区。这是代码:

#include <stdio.h>
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

void doOneSet();

int main() {
    srand(time(0));
    doOneSet();

    return 0;
}

void doOneSet() {
    int answer;
    for (int i = 0; i < 5; i++) {
        cout << (rand() % 100) << " + " << (rand() % 101) << ": ";
        fflush(stdout);
        cin >> answer;
    }
}