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

while (cin >> s) - не выходит из цикла по нажатию enter - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
26.10.2010, 18:56     while (cin >> s) - не выходит из цикла по нажатию enter #1
Собственно сабж...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <strings.h>
#include <list>
using namespace std;
void OUTS (list<string>::iterator j)
{
    cout << *j << endl;
    OUTS(++j);
}
int main()
{
    string s;
    list<string> LList;
    while (cin>>s)
    {
        LList.push_back(s);
    }
        LList.sort();
    OUTS(LList.begin());
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2010, 18:56     while (cin >> s) - не выходит из цикла по нажатию enter
Посмотрите здесь:

C++ Как сделать закрытие приложения по нажатию ENTER? (Java)
C++ Не выходит из цикла ввода
C++ не выходит из цикла while
C++ Не выходит из цикла
как реализовать остановку цикла с условием cin>>a C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
26.10.2010, 19:27     while (cin >> s) - не выходит из цикла по нажатию enter #2
А что вы ожидаете от цикла
C++
1
while (cin>>s)
, тут посмотрите, cin возвращает
Return Value

An istream object.
В while надо bool.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.10.2010, 19:42     while (cin >> s) - не выходит из цикла по нажатию enter #3
KuKu, while(cin>>s) для строк цикл не остановится никогда.
Кроме нажатия CTRL+Z или CTRL+D
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
26.10.2010, 19:47     while (cin >> s) - не выходит из цикла по нажатию enter #4
Не остановится, пока не встретит EOF. Если чтение происходит из файла - все будет ништяк. Если из консоли, нужно как-то явно указать, что ввод закончен, в винде, например, нажатием ctrl+Z.

Добавлено через 4 минуты
У класса istream есть оператор приведения к bool, который и вызывается неявно, когда требуется bool, а не istream. Причем если предыдущая операция чтения не удалась, он вернет false.
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
26.10.2010, 20:04  [ТС]     while (cin >> s) - не выходит из цикла по нажатию enter #5
Самое интересное, что я своими глазами видел, как такой код работал... мистика, одним словом.

Добавлено через 3 минуты
Да ещё и иностранные сайты говорят. что такая конструкция вполне рабочая.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.10.2010, 20:05     while (cin >> s) - не выходит из цикла по нажатию enter #6
DKOI, Она рабочая. Но ввод оканчивается только при встрече EOF
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2010, 20:11     while (cin >> s) - не выходит из цикла по нажатию enter
Еще ссылки по теме:

C++ Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
когда выходит из цикла C++
Не выходит из цикла C++

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

Или воспользуйтесь поиском по форуму:
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
26.10.2010, 20:11  [ТС]     while (cin >> s) - не выходит из цикла по нажатию enter #7
Я узнаю у человека, не нажимал ли он волшебную комбинацию клавиш хм... но всё равно всем спасибо )
Yandex
Объявления
26.10.2010, 20:11     while (cin >> s) - не выходит из цикла по нажатию enter
Ответ Создать тему
Опции темы

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