2016-12-17 15 views
0

Всякий раз, когда я пытаюсь запустить этот код:Программа пропускает GetLine()/C++

string title; 
     int Choice; 
     cout<<"1. Insert new term "; 
     cin>>Choice; 
     if (Choice==1) 
     { 
      getline(cin,title); 
     } 

программа только для чтения Выбор и закончить весь процесс: /, пожалуйста, помогите: D

ответ

1

cin>>Choice; листья конечный символ новой строки во входном буфере. И getline(cin,title); therfore читает пустую строку.

В общем, лучше не смешивать форматированный вход с getline из того же потока.

Быстро и легко исправить, чтобы удалить завершающий символ новой строки из потока с помощью std::basic_istream::ignore, например, так:

cin.ignore(2, '\n'); 
+0

Благодарю вас: D, это сработало –

0

После этого заявления

cin>>Choice; 

входной буфер будет содержать новую строку нажмите клавишу Enter.

Так следующее заявление с getline

if (Choice==1) 
    { 
     getline(cin,title); 

читает пустую строку, пока символ новой строки не встречается.

Вставить перед этим утверждением следующий вызов

#include <limits> 

    //... 


    { 
     getline(cin,title); 
     std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 

очистить буфер.

 Смежные вопросы

  • Нет связанных вопросов^_^