Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
#1

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

29.07.2016, 17:25. Просмотров 4205. Ответов 28
Метки нет (Все метки)

Поясните мне, какое действие выполняет функция:
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");
}

http://www.cyberforum.ru/cpp-beginners/thread1211959.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2016, 17:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Что делает cin.ignore(); (C++):

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

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

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

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

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

28
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
29.07.2016, 17:32 #2
Если без параметров, то удаляет один символ из потока. В данном случае '\n', который остаётся после ввода number.
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 17:36  [ТС] #3
Т.е. всё что будет введено после number не будет напечатано так?
0
TheBig
-20 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 17:36 #4
cin.ignore() Игнорирует син.
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 17:42  [ТС] #5
Не понял честно говоря
0
fire_Rising
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
29.07.2016, 17:43 #6
Maxim09, cin.ignore () — функция, которая считывает символ и игнорирует его
0
TheBig
-20 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 17:44 #7
А что непонятно? cin.ignore() убирает новую строку из син.

Добавлено через 39 секунд
Цитата Сообщение от fire_Rising Посмотреть сообщение
'/n'
'\n' во
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 17:51  [ТС] #8
Я поставил // перед этим cin.ignore () и ничего не изменилось. Объясните мне как оно работает!

Добавлено через 2 минуты
Разве что прога стала вылетать сразу после ввода без system("pause");
0
TheBig
-20 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 17:58 #9


C++
1
2
3
4
5
6
7
8
char stroka[100] = "***";
int n = 5;
 
cin >> n; // символ новая строка '\n' осталась в син.
cin.getline(stroka, 100); // что читается? правильно, что осталось в син, т.е. '\n'
 
cout << n << endl;
cout << stroka;
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 18:02  [ТС] #10
Или я дурак или лыжи не едут
Так и не понял ведь вроде ничего не меняется в проге!
и с
C++
1
cin.ignore()
.
C++
1
'\n'
работает и без него т.е. в компиляторе он скидывает на новую строку и с cin.ignore() и без него я в тупиковой ситуации! Да и ко всему прочему некоторые говорят что cin.ignore() игнорирует cin а некоторые что '\n' как тут разобраться
0
TheBig
-20 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 18:07 #11
да там просто. во смотри когда сначала читается число а потом строка вот тогда начнутся глюки. потому что после ввода числа символ новой строки остается в син. а когда начинается считывание строки вот тогда программа читает '\n' и думает что ввод закончен

Добавлено через 2 минуты
ну теперь то хоть понятно
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 18:08  [ТС] #12
Хнык хнык......

Добавлено через 20 секунд
И смех и грех.
0
TheBig
-20 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 18:10 #13
син.игноре() читает символы из входного потока до '\n'
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
29.07.2016, 18:14 #14
TheBig, не до '\n', а до EOF.
Maxim09, когда ты вводишь, например 10, в потоке будет "10\n". В number попадут только цифры, а '\n' останется в потоке и, возможно, будет мешать другим операциям ввода. Поэтому его удаляют.
1
TheBig
-20 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 18:16 #15
nmcf, до '\n' это конец строки
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
29.07.2016, 18:18 #16
TheBig, с документацией ознакомься. По умолчанию до EOF.
0
TheBig
-20 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 41
29.07.2016, 18:20 #17
ну вообще то да, до EOF. тут я согласен
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 21:42  [ТС] #18
Наткнулся вот на такое если вас не затруднит то напишите по это ШТУКЕ прогу да я посмотрю!

Ну например:
Твоя программа запросила: Введите количество студентов.
Юзер ввел: 3
Программа просит: А теперь введите оценки этих студентов.
Юзер вводит оценки для первого студента, для второго, для третьего, для четвертого, для пятого...
Вот в этом случае оценки для первых трех ты читаешь, а дальнейший ввод игнорируешь.
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 22:04  [ТС] #19
приблизительно понял в чём смысл но есть ещё тёмные уголки!
0
Maxim09
1 / 1 / 4
Регистрация: 23.08.2015
Сообщений: 454
29.07.2016, 22:36  [ТС] #20
Вот как я изменил но по моему это работает не правильно !!
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");
 
    char number[5];
    cout << "Введите число: ";
    cin.get(number,5);
    cin.ignore(5,'\n');
    cout << "Вы ввели: "<< number <<"\n";
    cin.get();
    system("pause");
    return 0;
}
0
29.07.2016, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2016, 22:36
Привет! Вот еще темы с решениями:

Что делает cin.get
Вот код: #include &lt;iostream&gt; int main() { int a; std::cin &gt;&gt; a;...

cin.ignore
Как работает эта функция? cin.ignore (1, '#');

Избавиться от cin.ignore()
Приветствую всех! Написал простенькую программку для работы с классами. ...

Друзья getline и cin.ignore
Постараюсь как можно более точно обрисовать проблему. Имеется string * v1 =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru