Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ruger
1 / 1 / 0
Регистрация: 25.10.2011
Сообщений: 15
#1

Возобновление потока cin. - C++

25.10.2011, 00:47. Просмотров 812. Ответов 5
Метки нет (Все метки)

Всем привет =) С недавних пор изучаю С++, и вот однажды, во время выполнения одного из заданий из учебника Страуструпа, наткнулся я на такое вот западло :
C++
1
2
3
4
5
6
        vector<int> v;
        int n = 0, sum = 0, temp = 0;
        cout << "Please enter few numbers (to stop entry type |):\n";
        while(cin>>temp)
            v.push_back(temp);
        cin >> n;
Собственно проблема: ввожу допустим 1 2 3 4 5 | , эти цифры записываются в вектор, но после этого в консоли просто напросто не появляется строки ввода, таким образом n я ввести не могу. Что делать?)
Пробовал добавлять cin.clear(); после цикла while(), ничего не изменилось) Спасибо за помощь))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 00:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возобновление потока cin. (C++):

Обработка ошибок ввода из потока cin - C++
Доброго времени суток всем! Помогите пожалуйста разобраться. После ввода буквы например, то есть когда поток ломается, пытаюсь его...

Детали относительно входного потока cin - C++
Здравствуйте) у меня тут такая проблемка: есть вот такой вот участок кода(в основной программе): //... cout &lt;&lt; &quot;\t&quot; &lt;&lt;...

Cin, чтение с конца полученного потока - C++
Происходит ввод с клавиатуры последовательности чисел разделенных пробелами, нужно извлечь из этого потока последнее значение. Как?

Использование потока cin для ввода символов - C++
Вот первая функция, cin.get(ch) которую я не понимаю int main() { char ch; cin.get(ch); while (ch != '\n') { cout &lt;&lt;...

Работа с cin при считывании с потока ввода - C++
есть кусочек кода while (1) { string buf = name; cout &lt;&lt; &quot;Message : &quot;; string symbolBuf = &quot;&quot;; while (cin &gt;&gt;...

Как проверить на пустоту буфер потока cin ? - C++
Мне нужно ввести строку такого типа: &quot;поиск 1 2 3&quot; cin&gt;&gt;sts.code; j = 0; while( ???вот тут что то !буфер.empty()) { ...

5
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.10.2011, 00:50 #2
Цитата Сообщение от Ruger Посмотреть сообщение
но после этого в консоли просто напросто не появляется строки ввода
какой-какой строки?
попробуйте cin.ignore(); перед cin >> n; добавить
1
Ruger
1 / 1 / 0
Регистрация: 25.10.2011
Сообщений: 15
25.10.2011, 00:55  [ТС] #3
какой-какой строки?
Ну мигающего курсора, обозначающего ввод =) Вторая инструкция cin просто не выполняется) Прощу прощения, с терминологией пока туговато))
cin.ignore() добавил, но в итоге всё так же. Вот полностью мой код программы (без заголовочных файлов):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main() {
try {
        vector<int> v;
        int n = 0, sum = 0, temp = 0;
        cout << "Please enter few numbers (to stop entry type |):\n";
        while(cin>>temp)
            v.push_back(temp);
        cin.ignore();
        cin >> n;
        cout << n;
}
catch (exception& e) {
    cerr << "error: " << e.what() << '\n';
    keep_window_open();
    return 1;
}
}
После ввода, к примеру, 0 1 2 3 | и нажатия enter на экране появляется 0 (т.е. значение n при инициализации) и программа завершается. Т.е. вторая инструкция cin просто напросто не выполняется.
0
Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
25.10.2011, 01:08 #4
перед вводом пиши cin.clear(); cin.sync();
1
Ruger
1 / 1 / 0
Регистрация: 25.10.2011
Сообщений: 15
25.10.2011, 01:09  [ТС] #5
О, сработало, пасиба)
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
25.10.2011, 01:11 #6
попробуйте использовать вместе
C++
1
2
cin.clear();
cin.ignore();
после цикла
0
25.10.2011, 01:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2011, 01:11
Привет! Вот еще темы с ответами:

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get() !=...

Ошибка при повторном получении данных из потока cin - C++
Добрый день, уважаемые форумчане. Делал учебную задачу и столкнулся с проблемой, которую затрудняюсь сам решить. Задача...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

Считывание слов из потока cin и вывод их в поток cout, с заменой нежелательных слов словом "Bleep" - C++
Напишите программу, заглушающую нежелательные слова; иначе говоря, считайте слова из потока cin и выведите их в поток cout, заменив...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru