Ввод строки c++ с пробелами
Следующая проблема:
getline не хочет работать после того как я ввожу некоторое число в другую переменную.
Понятия не имею почему так происходит, в c++ новичок
#include <string>
#include <iostream>
using namespace std;
int main()
{
int n;
string str;
cin >> n;
getline(cin, str);
cout << str;
}
Ответы (1 шт):
getline дочитывает остаток первой строки, все что идет после числа. Даже если там ничего нет, кроме символа переноса строки.
Например, если ввести 1,2, то в getline попадет ,2.
Возможных решений несколько:
Вызвать
getlineдва раза. Первый раз проверить, что получилась пустая строка, и если нет, выдать ошибку, что в первой строке после числа мусор. А результат второго вызова уже использовать.Проигноировать оставшуюся часть первой строки, вот так:
cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');.