AleXGray Опубликовано 31 января, 2005 Жалоба Поделиться Опубликовано 31 января, 2005 Проблема в следующем. Пишу я в консоли на с++ прогу, где в определенный момент пользователю надо вводить число: int n; ......... ....... cin >> n; допустим (во всех моих подобных прогах такой трабл) так вот, если в n ввести кучу букв или просто 111111111111111111111111111111111111111111111111111111111111, то на разных установленных вижуалах 6 происходит либо бесконечный прогон, либо дальнейшее игнорирование всех вводов с клавы до конца проги. Почему так происходит я вроде понял: в буфер пишется код ошибки при несоответствии типов, либо поочередно ставятся лишние куски 1111. Так вот, вопрос в том, можно ли принудительно обнулить буфер (после ввода) и как до него добраться. Если можно, словесные объяснения сопроводить куском кода (примером), потому что знаний пока дуже небагато. Буду признателен. :( Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
WhiteDevil Опубликовано 31 января, 2005 Жалоба Поделиться Опубликовано 31 января, 2005 А вроде никак до буфера не добраться... если только ты не перепишешь C++ stdlib :) Попробуй использовать scanf в случаях с большими строками. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Andrew.Egorovsky Опубликовано 1 февраля, 2005 Жалоба Поделиться Опубликовано 1 февраля, 2005 AleXGray cin.clear(); Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
WhiteDevil Опубликовано 1 февраля, 2005 Жалоба Поделиться Опубликовано 1 февраля, 2005 Опозорен. Забыл про метод clear в классе cin. Каюсь и ухожу молиться :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AleXGray Опубликовано 3 февраля, 2005 Автор Жалоба Поделиться Опубликовано 3 февраля, 2005 Спасибо, пойду пробовать :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AleXGray Опубликовано 4 февраля, 2005 Автор Жалоба Поделиться Опубликовано 4 февраля, 2005 Работает, с параметром (0) . А есть что-то, чтобы преобразовать строку в цифры? Потому что эта штука спасает от переполнения, но не спасает от несоответствия типов. У меня на вводе тогда будет строка, а не int, а потом надо все равно в инт. Я могу вручную забацать через коды, но уж больно громоздко, как мне кажется... ;) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ustus Опубликовано 11 февраля, 2005 Жалоба Поделиться Опубликовано 11 февраля, 2005 Первое, что приходит в голову - читай как строку, а потом преобразуй, например strtol - будешь иметь полный контроль. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.