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

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

29.07.2016, 17:25. Показов 122132. Ответов 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
2402 / 1932 / 763
Регистрация: 27.07.2012
Сообщений: 5,573
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 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,537
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru