powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ввод std::string
16 сообщений из 16, страница 1 из 1
Ввод std::string
    #34188745
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу разобраться, почему этот код работает не как надо:
Код: plaintext
1.
2.
3.
4.
5.
string s, s1;
getline(cin,s,'\n');
cout<<'\n'<<s;
getline(cin,s1, '\n');
cout<<'\n'<<s1;
В результате сначала выполняются обе getline, а уже потом - вывод. Подскажите пожалуйста, как от этого избавиться.
...
Рейтинг: 0 / 0
Ввод std::string
    #34188763
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в буферизации ввода-вывода. Откройте для себя метод flush
...
Рейтинг: 0 / 0
Ввод std::string
    #34188781
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для кого flush? Для cout не помогает, а для cin его нет...
...
Рейтинг: 0 / 0
Ввод std::string
    #34188800
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlipДля кого flush? Для cout не помогает, а для cin его нет...
Для cout. Перед getline.
...
Рейтинг: 0 / 0
Ввод std::string
    #34188807
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous SlipДля кого flush? Для cout не помогает, а для cin его нет...
Для cout. Перед getline.
т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
string s, s1;
getline(cin,s, '\n');
cout<<'\n'<<s;
cout.flush();
getline(cin,s1,'\n');
cout<<'\n'<<s1;
cout.flush();
Так не работает(т.е. работает так же, как и без flush)
...
Рейтинг: 0 / 0
Ввод std::string
    #34188808
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlipТак не работает(т.е. работает так же, как и без flush)
т.е. первый вывод не появляется перед вторым getline? Должно работать. Убедитесь, что Вы действительно пересобрали бинарник.
...
Рейтинг: 0 / 0
Ввод std::string
    #34188810
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кончено пересобрал, но работает так(более подробно):
ввожу строку до enter'a
ввод продолжается...
ввожу еще одну строку до enter'a
ввод заканчивается, выводится первая строка и запрашивается еще один ввод...
ввожу еще одну строку...
ввод заканчивается и выводится вторая строка. Работа программы завершена.
...
Рейтинг: 0 / 0
Ввод std::string
    #34188830
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slipввод заканчивается, выводится первая строка и запрашивается еще один ввод...
Заметьте, это ни с какой стороны не похоже на "сначала выполняются обе getline, а уже потом - вывод". Скорее первый getline не завершается по Enter.
...
Рейтинг: 0 / 0
Ввод std::string
    #34188833
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, это именно выполняются сначала 2 getline, потому что строчка-то вторая выводится та, которая была введена после первого enter'a
...
Рейтинг: 0 / 0
Ввод std::string
    #34188837
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
... правда, потом выполняется еще 1 getline... andrey_anonymous, а не могли бы Вы посмотреть, как это работает на вашем компиляторе? А то может это у меня глюки какие пошли...
...
Рейтинг: 0 / 0
Ввод std::string
    #34190114
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
string s, s1;
getline(cin,s,'\n');
cout<<'\n'<<s<<"\nСкока-скока???? Ещё раз.\n";
getline(cin,s1, '\n');
cout<<'\n'<<s1;
чего выведет?
...
Рейтинг: 0 / 0
Ввод std::string
    #34191047
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iomainp господа, забудьте про '\n' пишите endl (это с flush) или ends (кжели без него)
...
Рейтинг: 0 / 0
Ввод std::string
    #34191494
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmo
Код: plaintext
1.
2.
3.
4.
string s, s1;
getline(cin,s,'\n');
cout<<'\n'<<s<<"\nСкока-скока???? Ещё раз.\n";
getline(cin,s1, '\n');
cout<<'\n'<<s1;
чего выведет?
Сначала просит ввод, ввожу до enter'a, просит сразу же еще ввод, ввожу опять до enter'a, после этого выводит то, что ввел в первый раз, потом "Скока-скока???? Ещё раз.", а потом опять просит ввод.
blindediomainp господа, забудьте про '\n' пишите endl (это с flush) или ends (кжели без него)
Все равно та же фигня...
...
Рейтинг: 0 / 0
Ввод std::string
    #34191497
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, это глюк Visual Studio 6.0, потому что сегодня скомпилил g++-ом, и все пашет как надо.
...
Рейтинг: 0 / 0
Ввод std::string
    #34192609
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй getline(cin,s);
...
Рейтинг: 0 / 0
Ввод std::string
    #34194629
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoпопробуй getline(cin,s);
То же самое, что неудивительно...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ввод std::string
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]