Мне нужно считать числа до конца строки, я реализовал это с помощью cin.peek():
int a;
while(cin.peek() != '\n')
{
cin >> a;
// some pieces of code
}
Но возникла проблема: в то время как строчки по типу 1 2 3
этот код обрабатывает правильно, для такой же строчки, но с пробелом в конце, работа программы продолжается. Подскажите, пожалуйста, почему возникает такая проблема, и как её решать?
Получается так, потому что у вас остался пробел(ы) перед '\n' и соответственно cin.peek() смотрит на этот пробел и условие будет true, те будет ждать очередного числа.
Если нужно считать неопределённое количество чисел в строке, то можно считать эту строку и передать в std::stringstream и уже дальше читать из stringstream, пробелы в конце не помешают.
string s;
getline(cin, s);
stringstream inp(s);
int a;
while (inp >> a) {
// some pieces of code
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всех приветствуюУ меня появился очень странный вопрос, но:
Запускаются два потокаПотокам на выполнение даётся одна и та же функция
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском