Я написал очень базовую программу на С++, которая попросила пользователя ввести число, а затем строку. К моему удивлению, при запуске программы он никогда не останавливался, чтобы попросить строку. Он просто пропустил это. После некоторого чтения в StackOverflow я узнал, что мне нужно добавить строку, в которой говорится:
cin.ignore(256, '\n');
перед строкой, которая получает строковый ввод. Добавив это, проблема была решена и запустила работу программы. Мой вопрос в том, почему С++ нуждается в этой строке cin.ignore()
и как я могу предсказать, когда мне нужно будет использовать cin.ignore()
?
Вот программа, которую я написал:
#include <iostream>
#include <string>
using namespace std;
int main()
{
double num;
string mystr;
cout << "Please enter a number: " << "\n";
cin >> num;
cout << "Your number is: " << num << "\n";
cin.ignore(256, '\n'); // Why do I need this line?
cout << "Please enter your name: \n";
getline (cin, mystr);
cout << "So your name is " << mystr << "?\n";
cout << "Have a nice day. \n";
}