2016-09-19 10 views
0

У меня здесь странная проблема. Я получаю 2 строки в качестве входных данных, используя код ниже:C++ getline(); отображает один ниже

std::string input1, input2; 
std::cout<<"Please enter name:"; 
std::getline(std::cin, input1); 
std::cout<<"Address: "; 
std::getline(std::cin,input2); 

Проблема у меня в том, что вместо того, чтобы отображать один в то время, как дисплей сразу, так что результат выглядит следующим образом:

Please enter name: Address:

В результате ни одна строка не вводит никаких данных.

Какие-нибудь идеи в чем проблема?

+2

'std :: cout >>" Пожалуйста, введите имя: ";' ?! Как вы его собрали? Это должно быть '<<'. –

+0

@AmiTavory oops скопировал его неправильно – JAPK

+1

Можете ли вы показать [mcve]? Есть ли какие-либо другие данные, которые поступают до этого? Как вы запускаете программу? – Angew

ответ

3

Попробуйте использовать cin.ignore() перед GetLine // пренебрегает \ п, что было оставлено после того, как пользователь нажал клавишу ввода

+0

Это сделано, спасибо – JAPK

+2

@JohnKressel Это, однако, означает, что * must * был каким-то предварительным вводом (в отличие от того, что вы сказали в комментариях). Входной поток пуст при запуске программы. – Angew

0

Не используйте

cin.ignore(); 

Поскольку в цикле он будет игнорировать вас требуется ввод также. Использовать

cin>>ws; 

Перед выходом. ws означает пробел, это игнорирует пробел в вашей программе, и код будет работать нормально.