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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
#1

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

26.10.2010, 18:56. Просмотров 3678. Ответов 6
Метки нет (Все метки)

Собственно сабж...
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KuKu
 Аватар для KuKu
1552 / 1030 / 73
Регистрация: 17.04.2009
Сообщений: 2,968
26.10.2010, 19:27     while (cin >> s) - не выходит из цикла по нажатию enter #2
А что вы ожидаете от цикла
C++
1
while (cin>>s)
, тут посмотрите, cin возвращает
Return Value

An istream object.
В while надо bool.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
Еще ссылки по теме:

Пропуск вызова cin.getline в первой итерации цикла C++
когда выходит из цикла C++
Не выходит из цикла C++
Как выйти из цикла клавишей Enter C++
C++ Нюансы синтаксиса: что значит std::cin в условии цикла while?

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

Или воспользуйтесь поиском по форуму:
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
Ответ Создать тему
Опции темы

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