2 / 1 / 1
Регистрация: 20.09.2018
Сообщений: 17
1

Как очистить поток ввода

15.10.2018, 11:48. Показов 3853. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cout << "Введите ряд целых чисел произвольной длины\n";
vector<int> vecint;
int sum = 0;
for (int i; cin >> i; )
    vecint.push_back(i);
cout << "\nВведите количество суммируемых чисел";
int n = 0;
cin >> n;
if (n <= 0 || n>(vecint.size() - 1)) {
    cout << "\nЧисло элементов должно быть от 1 до " << vecint.size() - 1;
}
else    {
    for (int i; i <= n; i++) {
        sum += vecint[i-1];
    }
    cout << "\nСумма первых " << n << " чисел равна " << sum;
}
На выходе получаю:

Введите ряд целых чисел произвольной длины
1 2 3 q

Введите количество суммируемых чисел
Число элементов должно быть от 1 до 2
D:\YandexDisk\С++ code\Упражение из главы 6\Debug\Упражение из главы 6.exe (процесс 5144) завершает работу с кодом 0.
Чтобы автоматически закрывать консоль при остановке отладки, установите параметр "Сервис"*-> "Параметры"*-> "Отладка"*-> "Автоматически закрыть консоль при остановке отладки".
Чтобы закрыть это окно, нажмите любую клавишу…

Т.е. ввод в переменную не работает, подозреваю что из-за того что в потоке cin остается символ который нельзя поместить в целочисленную переменную. Или нет?

Добавлено через 2 минуты
Решил через
C++
1
cin.ignore(numeric_limits<streamsize>::max(), '\n');
Добавлено через 59 секунд
А как сделать ввод до конца строки? Чтобы не вводить в конце неправильный символ, а завершать ввод по клавише Энтер.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2018, 11:48
Ответы с готовыми решениями:

Как очистить поток ввода?
std::istringstream iss(s1); idd&gt;&gt;a; iss.clear();; s1=s3; iss&gt;&gt;b надо чтоб s3 в b записалось,...

Как очистить входной поток от '\n'?
Программа закрывается #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include...

Как читает поток ввода cin ?
Спасибо большое, разобрался. Возникли новые вопросы: 1) как читает поток ввода оператор cin ?...

Очистить поток
Хотел с помощью куска кода (см.ниже) очистить буфер связанный с потоком cin. Но выражение в скобках...

4
Модератор
Эксперт С++
12117 / 9785 / 5913
Регистрация: 18.12.2011
Сообщений: 26,257
15.10.2018, 11:56 2
Ввести строку целиком,
а потом с помощью istringstream ввести числа.
C++
1
2
3
4
5
string s;
getline(cin,s);
istringstream ss(s); 
for (int i; ss >> i; )
    vecint.push_back(i);
1
153 / 136 / 45
Регистрация: 15.02.2010
Сообщений: 745
15.10.2018, 12:08 3
//очистить поток ввода
cin.clear();
0
Don't worry, be happy
17758 / 10526 / 2030
Регистрация: 27.09.2012
Сообщений: 26,502
Записей в блоге: 1
15.10.2018, 12:19 4
LVV, это сброс (очистка флагов) ошибок, а не очистка потока.
1
153 / 136 / 45
Регистрация: 15.02.2010
Сообщений: 745
16.10.2018, 04:09 5
Цитата Сообщение от Croessmah Посмотреть сообщение
LVV, это сброс (очистка флагов) ошибок, а не очистка потока.
Сознаю свою вину. Меру. Степень. Глубину.
Здесь, вроде, неплохо об этом рассказано.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2018, 04:09
Помогаю со студенческими работами здесь

Очистить поток от EOF
Как очистить вх. поток от символа конца строки? Вот например нужно мне считать два куска текста (с...

Как можно сделать виртуальный поток ввода / вывода?
есть программа, которая считает кол-во слов в строке причудливым способом, конечно можно сделать...

Как прервать поток ввода, введя определенный символ?
Доброго всем времени суток double d; char c; cin &gt;&gt; d; cin &gt;&gt; c; cout &lt;&lt; c &lt;&lt; d; Я ввожу...

Очистить поток std::stringstream
Вызываю функцию и в ней в поток инициализирую строку lеftPPF, далее вызываю повторно функцию и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru