| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > string |
| Автор: ZufuS 8.12.2007, 22:51 | ||
Надо ввести строки с учётом пробелов. Использую getline(). Но если перед вызовом этой функции что-то вводится, получается не то, что задумано.
после ввода i появляется str1=str2= |
| Автор: JackYF 9.12.2007, 02:01 | ||
Наверное, буферизация. После cout << делай
|
| Автор: archimed7592 9.12.2007, 08:36 | ||
| JackYF, совет правильный, но после ввода i появиться этого не может ZufuS, а ты после ввода i enter один раз нажимаешь? Добавлено через 41 секунду Кстати:
|
| Автор: ZufuS 9.12.2007, 12:59 |
Не помогает. Куда это написать надо? естественно |
| Автор: archimed7592 9.12.2007, 13:04 |
Сразу после каждого cout << ... Вообще говоря, ничего естественного в таком поведении нет. |
| Автор: ZufuS 9.12.2007, 13:27 | ||
так? не помогает. |
| Автор: archimed7592 9.12.2007, 14:22 |
| Эммм... Я, если честно, сижу сейчас в шоке. У меня оно работает точно так же |
| Автор: JackYF 9.12.2007, 14:22 | ||
ZufuS, первый getline считывает '\n', думая, что это и есть первый ввод. Надобно тогда пропустить это:
Перед первым getline. |
| Автор: archimed7592 9.12.2007, 14:28 | ||
Ага, всё понятно - всё что ты вводишь после числа i - будь то пробелы или перевод строки будет восприниматься как str1. Т.к. getline читает до первого перевода строки, ты получаешь в результате str1 равное пустой строке. Т.е. нужно добавить вот это:
Ещё раз обращаю внимание на то, что у тебя в 3-ей строке снизу было str1 вместо str2. Добавлено через 3 минуты и 14 секунд JackYF, что ж ты раньше молчал? Меня чуть кондратий не хватил, когда я увидел на экране описываемое поведение |
| Автор: ZufuS 9.12.2007, 16:31 |
| заработало, спасибо |
| Автор: bsa 9.12.2007, 16:33 |
| ZufuS, пометь тему решенной |
| Автор: zkv 10.12.2007, 02:36 | ||||
вообщем-то грабли старые как мир, решить можно _flushall() :
но вероятно это не лучший выход. У Xenon'a подглядел более вменяемое решение проблемы через basic_istream::sync():
|
| Автор: JackYF 10.12.2007, 15:45 | ||
а вот это не пашет, я проверял. Вернее так: пашет не всегда. |