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 - будешь иметь полный контроль. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти