2016-10-19 16 views
3

примечание: я ничего не нашел по этой теме, извините, если это дубликат.пишите на терминал и читайте с той же строки

Require:

мне нужен пользователь для просмотра текста и ввод текста на ту же линию:

например,

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} 

Как я могу разрешить вход на предыдущую строку и прочитать этот вход?

+1

Не послать 'newline' и если выход не появится, промойте его. –

+0

Я не совсем понимаю, не могли бы вы дать ответ с вашим предложением? – KGCybeX

ответ

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; 
} 
+0

Я только что понял, я уточню свой вопрос с помощью своего конкретного решения, флеш действительно сработал, спасибо! – KGCybeX

3

Вы должны удалить конец линии и промывать выход:

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

это не решает его полностью, кажется, что терминал висит, мне нужно было сбросить 'cout', см. Мое обновление – KGCybeX

+1

Теперь это полное решение, я так думаю ... – Mohan

0

Это мой конкретный решение

и благодаря комментарию «Погода Джейн» относительно флеша и удаления новой строки (что равно endl)

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

Если я просто удалили endl, терминал будет висеть, тем самым вызывая cout.flush() решить эту «зависание» вопрос.

Надеется, что это помогает кто-то еще