Форум программистов, компьютерный форум CyberForum.ru

Код ждёт ввода следующей строчки - цикл повторяется бесконечно. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
22.08.2011, 10:42     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #1
В учебнике написано, что вот этот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string word;
    
    while (cin >> word)
        cout << "прочитано слово: " << word << "\n";
    
    cout << "все слова прочитаны";
}
считает введённую строчку, возвратит слова,а когда слова в ней закончатся, while будет false и перейдёт к следующей cout. Вместо этого код ждёт ввода следующей строчки - цикл повторяется бесконечно. Как же его завершить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 10:42     Код ждёт ввода следующей строчки - цикл повторяется бесконечно.
Посмотрите здесь:

Почему цикл выполняется бесконечно? C++
C++ Как правильно засунуть две строчки в код программы?(
Цикл бесконечно повторяется C++
Напишите программу на C++, использующую цикл и управляющую последовательность табуляции \t для печати следующей таблицы значений: C++
Не большой код, нужно написать коментарии хотябы на главные строчки! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 10:49     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #2
Windows - Ctrl+Z Linux - Ctrl+D
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:51     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
Windows - Ctrl+Z Linux - Ctrl+D
Естественно нужна имитация конца потока
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
22.08.2011, 10:54  [ТС]     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #4
Спасибо.
* * *
Вот оно что, Михалыч...
Belphanior
8 / 8 / 0
Регистрация: 10.03.2011
Сообщений: 62
22.08.2011, 11:19     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #5
Ну это не решает проблемы целиком. Пользователя то не заставишь вводить ctrl+z
Voroshek
6 / 6 / 1
Регистрация: 22.08.2011
Сообщений: 75
22.08.2011, 11:27  [ТС]     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #6
Это понятно, главное в принципе разобрались. А для пользователя мы какой-нибудь if-elif придумаем
Цитата Сообщение от Olga
if-else вас не спасет, все равно ctrl+z вводить придется
Olga, спасибо. Я пока не буду забегать так далеко впереди паровоза
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:28     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #7
Цитата Сообщение от Voroshek Посмотреть сообщение
Это понятно, главное в принципе разобрались. А для пользователя мы какой-нибудь if-elif придумаем
if-else вас не спасет, все равно ctrl+z вводить придется
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.08.2011, 11:33     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #8
Цитата Сообщение от Olga_ Посмотреть сообщение
if-else вас не спасет, все равно ctrl+z вводить придется
Ну почему, можно и без него
C++
1
2
3
4
5
6
7
#include <iostream>
int main(){
    std::string str;
    while (std::cin >> str)
        if (str == "exit")
            std::cin.setstate(std::ios::eofbit);
}
Хотя правильнее будет просто break поставить.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:37     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #9
Цитата Сообщение от diagon Посмотреть сообщение
Ну почему, можно и без него...
Ну если так, то да, спасибо, Diagon
Belphanior
8 / 8 / 0
Регистрация: 10.03.2011
Сообщений: 62
22.08.2011, 11:40     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #10
Что-то мне подсказывает, что нужно попробовать использовать cin.getline
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2011, 12:09     Код ждёт ввода следующей строчки - цикл повторяется бесконечно.
Еще ссылки по теме:

Цикл не повторяется C++
C++ Не повторяется цикл
При вводе вместо цифр символов программа перестаёт ожидать ввода на следующей итерации цикла. Почему? C++

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

Или воспользуйтесь поиском по форуму:
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 12:09     Код ждёт ввода следующей строчки - цикл повторяется бесконечно. #11
Цитата Сообщение от Belphanior Посмотреть сообщение
Что-то мне подсказывает, что нужно попробовать использовать cin.getline
Тогда потом слова отдельно надо выделять, а тут они выделяются за счет того, то ' ', '\t' и '\n' разделителями считаются
Yandex
Объявления
22.08.2011, 12:09     Код ждёт ввода следующей строчки - цикл повторяется бесконечно.
Ответ Создать тему
Опции темы

Текущее время: 00:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru