写入终端并从同一行读取

时间:2016-10-19 08:31:06

标签: c++ qt cin cout

注意:我在这个主题上没有找到任何内容,如果这是重复的话,请道歉。

需要:

我需要用户查看文本并将文本输入到同一行:

e.g。

Please enter your name: {user enter's name here}

我目前拥有的是:

using namespace std;
//...
cout << "Enter name: " << endl;
QString name = cin.readLine();

显示:

Enter name:
{user enters name on next line}

如何在上一行允许输入并阅读此输入?

3 个答案:

答案 0 :(得分:3)

您需要删除行尾并刷新输出:

cout << "Enter name: " ;
cout.flush();

答案 1 :(得分:2)

在C中,可以这样做,而不打印newline

#include <stdio.h>

int main() {
    char name[100];
    printf("Enter name: ");               // no newline
    fflush(stdout);                       // ensure text is printed
    fgets(name, sizeof name, stdin);
    return 0;
}

答案 2 :(得分:0)

这是我的具体解决方案

感谢关于同花顺和删除换行符的“天气简”的评论(endl

using namespace std;
//...
cout << "Enter name: ";
cout.flush();
QString name = cin.readLine();

如果我刚删除endl,终端会挂起,因此调用cout.flush()解决了这个“挂起”问题。

希望这有助于其他人