2013-07-28 2 views
0

Когда я просто нажимаю enter без ввода чего-либо, getline() функция также получает пустой ввод. Как исправить это, чтобы не допускать пустой ввод (имеет символ и/или номер и/или символ)?Как избежать пустого ввода с помощью getline()?

string Keyboard::getInput() const 
{ 
    string input; 

    getline(cin, input); 

    return input; 
}  
+1

вызова 'getline' в цикле, пока вы не получите правильный вход. – jamesdlin

ответ

3

Вы можете держать повторно делать GetLine до тех пор, пока вход пустым. Например:

string Keyboard::getInput() const 
{ 
    string input; 

    do { 
     getline(cin, input); //First, gets a line and stores in input 
    } while(input == "") //Checks if input is empty. If so, loop is repeated. if not, exits from the loop 

    return input; 
} 
+1

Как насчет EOF? Цикл неправильный IMO. – Hiura

2

Попробуйте это:

while(getline(cin, input)) 
{ 
    if (input == "") 
     continue; 
} 
2
string Keyboard::getInput() const 
{ 
    string input; 
    while (getline(cin, input)) 
    { 
     if (input.empty()) 
     { 
      cout << "Empty line." << endl; 
     } 
     else 
     { 
      /* Some Stuffs */ 
     } 
    } 
} 
Смежные вопросы