|
Модераторы: Daevaorn |
|
kapusta007 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 10.7.2016 Репутация: нет Всего: нет |
делая примеры из книги STL C++17
наткнулся на такой сюрприз уже не в первый раз вот иследуемый код
при вставке при помощи алгоритма std::copy(it_cin, end_cin, back_inserter(v)); программа зависает. решил сделать при помощи цикла for
тоже виснет, но выясняются обстоятельства что когда все элементы пройдены и итератор it_cin инкрементируеться последний раз, чтобы проверить истеность и выйти из цикла, программа засыпает вот прилагаю скрин |
||||
|
|||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Ctrl-Z нажать не пробовали?
|
|||
|
||||
kapusta007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 10.7.2016 Репутация: нет Всего: нет |
Спасибо помогло))) а что это значит? можете рассказать?
|
|||
|
||||
kapbepucm |
|
|||
Опытный Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Она не зависает, а ожидает данных из std::cin, при том, что цикл копирования будет повторятся при поступлении новых данных. В вашем коде условие "it_cin != end_cin", если вводить нормальные циферки, всегда выполняется, а "++it_cin" ждёт новых данных. Комбинация клавиш ctrl-Z (не везде будет работать- в моём случае, например, ctrl-D) делает условие "it_cin != end_cin" невыполнимым.
Это сообщение отредактировал(а) kapbepucm - 22.11.2019, 11:03 -------------------- (С) kapbepucm |
|||
|
||||
kapusta007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 10.7.2016 Репутация: нет Всего: нет |
kapbepucm, Спасибо за объяснение)) а как тогда прервать считку данных кроме как использование хоткеев? или понять что данные завершились?
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Ctrl-Z это не хоткей. Это стандартный способ для консольного потока завершиться. Он на эту комбинацию и выдаёт EOF Если вы запустите свою программу с перенаправлением ввода (prog.exe <file.txt), то никаких Ctrl-Z будет не нужно - прочтётся файл file.txt и в конце выдаст EOF Либо читайте из входного потока построчно и сами решаёте, когда завершать программу по анализу того, что прочли. |
|||
|
||||
kapbepucm |
|
||||
Опытный Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
-------------------- (С) kapbepucm |
||||
|
|||||
kapusta007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 10.7.2016 Репутация: нет Всего: нет |
Парни спасибо за объяснение)))!!!
|
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |