繁体   English   中英

C++ cout 然后cin挂

[英]C++ cout then cin hanging

#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语句,也没有得到 get cin语句。 当我按如下方式结束cin语句时,它工作正常,但我不确定为什么。 我想在同一行输入,而不是在下一行。

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

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

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

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

我无法在 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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM