Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/548: Рейтинг темы: голосов - 548, средняя оценка - 4.64
 Аватар для Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458

Что делает cin.ignore();

29.07.2016, 17:25. Показов 123246. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поясните мне, какое действие выполняет функция:
C++
1
cin.ignore();
Лучше на примере каком нибудь!(с комментариями)
Может быть это что-то типа
C++
1
continue
Добавлено через 3 минуты
На этот вопрос меня натолкнула вот эта прога которую я нарыл в нэте!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main()
{
  int number;
 
  cout << "Введите число: ";
  cin >> number;
  cin.ignore();
  cout << "Вы ввели: "<< number <<"\n";
  cin.get();//или может это?  system("pause");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2016, 17:25
Ответы с готовыми решениями:

Что делает метод cin.ignore?
cin.ignore(0,'\n'); Что она делает?

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые мне не понятны, и прошу объяснить, как...

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

33
-19 / 1 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 22:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Maxim09 Посмотреть сообщение
cout << "Введите число: ";
* * cin.get(number,5);
ето не число а строка
0
 Аватар для Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
29.07.2016, 22:55  [ТС]
А как будет правильно?
0
-19 / 1 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 22:57
правильно через инт или лонг
C++
1
2
3
int n;
cout << "Введите число";
cin >> n;
0
 Аватар для Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
29.07.2016, 23:02  [ТС]
Так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
 
    int n;
    cout << "Введите число: ";
    cin>>n;
    cin.ignore(5,'\n');
    cout << "Вы ввели: "<< n <<"\n";
    cin.get();
    system("pause");
    return 0;
}
0
 Аватар для Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
29.07.2016, 23:06  [ТС]
Допустим я ввёл число 123456 а тут...
C++
1
cin.ignore(5,'\n');
стоит 5 он по идее напечатает первые 5 так? а 6-ой элемент не напечатает верно? или я ошибаюсь?
0
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 22
30.07.2016, 07:21
Цитата Сообщение от Maxim09 Посмотреть сообщение
cout << "Введите число: ";
* * cin>>n;
* * cin.ignore(5,'\n');
* * cout << "Вы ввели: "<< n <<"\n";
чтобы вам было видно введите например: 15651ds, и посмотрите что выходить
0
 Аватар для Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 458
30.07.2016, 08:53  [ТС]
jalols, но ведь 'ds' так или иначе не будет выведен на экран компилятором т.к. у меня же int
А мне-же нужно узнать(понять) действие которое выполняет ф-ция cin.ignore

Добавлено через 5 минут
К примеру cin.ignore(40,'\n') т.е. будет проигнорировано(пропущено) 40 символов так? в таком случае зачем нуженj это '\n'

Добавлено через 1 минуту
И ко всему прочему СИМВОЛЫ именно символы верно а не ЦИФРЫ, поправьте меня если я не прав!

Добавлено через 5 минут
Т.е. если я захочу пропустить 40 элементов в введённом ЧИСЛЕ то это cin.ignore() не сработает так?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.07.2016, 09:24
Maxim09, ты в документацию заглядывал прежде чем спрашивать одно и то же?
Цитата Сообщение от Maxim09 Посмотреть сообщение
К примеру cin.ignore(40,'\n') т.е. будет проигнорировано(пропущено) 40 символов так? в таком случае зачем нуженj это '\n'
Это дополнительное условие - 40, если раньше не встретится '\n'.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
01.08.2016, 20:50
Цитата Сообщение от Maxim09 Посмотреть сообщение
А мне-же нужно узнать(понять) действие которое выполняет ф-ция cin.ignore
C++
1
2
cin.ignore(A,B);//==
for(int i=0;i<A && cin.get()!=B;++i);
Цитата Сообщение от Maxim09 Посмотреть сообщение
И ко всему прочему СИМВОЛЫ именно символы верно а не ЦИФРЫ, поправьте меня если я не прав!
Не прав, цифры тоже считаются за символ. Вообще все что можно запихнуть в char считается за символ.
0
0 / 0 / 0
Регистрация: 28.01.2019
Сообщений: 8
05.03.2019, 13:42
Поздно, но написать хочется
Когда при помощи cin вводишь в консольке что-либо, то для окончания ввода ты нажимаешь Enter. Нажатие Enter интерпретируется как конец ввода посредством символа '\n', который означает конец строки (и ввода).
Т.е. когда нажимаешь Enter, ты автоматом вводишь символ '\n'.
При работе с массивами символов и строками это вызывает глюки.
Отсюда и функция cin.ignore() (если не ошибаюсь).

P.S. сам новичок, но надеюсь я правильно понял.
0
7 / 7 / 0
Регистрация: 04.11.2016
Сообщений: 94
22.08.2022, 19:11
По-моему и без cin.ignore все точно так же работало бы. Доныне я и не знал о его существовании
0
2410 / 1946 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
22.08.2022, 19:53
Цитата Сообщение от fennix Посмотреть сообщение
По-моему и без cin.ignore все точно так же работало бы.
"По-моему" в программировании не работает. Если не хватает знаний понять, так работает или нет, можно же запросто проверить. Проверяли?
0
7 / 7 / 0
Регистрация: 04.11.2016
Сообщений: 94
22.08.2022, 20:16
Данная функция работает с потоковыми данными и позволяет извлекать символы. А для одиночного ввода: "Введите число" думаю она не обязательна
0
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
22.08.2022, 20:27
fennix, без игнора, вот как будет.
Смотри:
C++
1
2
cout<<"Введите number:";
cin>>number
Поток ввода-вывода не обновится пока ты в конце своего ввода не нажмёшь ENTER

ты можешь вводить не одно число, а сколько угодно чего угодно, например
1 69 abc 666<ENTER>

При этом пока ты не нажал ENTER считывания не происходит.
Но после нажатия в потоке оказывается сразу всё, что ввели.
Теперь оператор ввода последовательно распихивает текст по переменным, при этом попутно парсится текстовая строка в данные.
в переменную number идёт единица, остальное же остаётся в cin и ждёт следующего обращения к cin в программе.
то есть следующей строчкой может идти
cout<<"Введите number2:";
cin>>number2
И твоя программа не будет ждать нового ввода, она сразу возьмёт 69, лежащее там с прошлого раза.

аналогичная ситуация происходит в программе
C++
1
2
3
4
cout<<"Введите number:";
cin>>number;
cout<<"Ожидаем нажатия Enter, не закрывайся, окно!";
cin.get();
Увидев "Введите number:" тебе придётся на клавиатуре нажать ENTER после ввода цифр
И аналогично первому примеру, где 69 из первой строки попала в следующий ввод,
у тебя ENTER из первой строки попадёт в cin.get() и он не станет ждать настоящего нажатия ENTER в конце.
вот почему приходится иногда писать cin.ignore
Чтобы проигнорировать то что могло остаться на входе в cin после предыдущего ввода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2022, 20:27

Объясните работу методов cin.getline и cin.ignore
Фрагмент программы ниже. Что делают cin.getline и cin.ignore (12-13 строки) void WorkWithBooks(int Books) { if (Books &gt; 0) ...

Для чего в код вводится cin.ignore после того, как cin>> уже сработало?
Доброго времени суток! Просматриваю простой код. Вводится строка типа string: фунты и дюймы Затем значения переводится в типы int и...

Проблема с cin.ignore() и cin.clear()
Есть проблема. Добавлено через 11 минут // ConsoleApplication6.cpp: определяет точку входа для консольного приложения. // ...

cin.getline и cin.ignore
Есть кусок кода в котором не могу разобраться. Если cin.ignore() есть, то теряется первый вводимый символ начиная со второго входа в for....

Cin.clear cin.ignore
Как использовать cin.clear и cin.ignore?


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru