0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
1

cin.ignore

06.08.2013, 20:38. Показов 72440. Ответов 8
Метки нет (Все метки)

Как работает эта функция?
C++
1
cin.ignore (1, '#');
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2013, 20:38
Ответы с готовыми решениями:

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

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

Объясните работу методов cin.getline и cin.ignore
Фрагмент программы ниже. Что делают cin.getline и cin.ignore (12-13 строки) void...

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

8
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 20:54 2
Извлечёт и отбросит(пропустит) из потока чтения один символ.
2
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
06.08.2013, 21:00  [ТС] 3
Никак не могу понять какую роль именно в этой функции играет этот параметр (#)?
0
160 / 101 / 14
Регистрация: 17.10.2012
Сообщений: 488
06.08.2013, 21:05 4
...
getline(buff,max) буффер ввода и макс число символов, при этом удаляет из буфера символ разрыва строки поэтому ввод до первого пробела.
ignore(n,'\n') число пропускаемых символов и символ разделения т.е. проскает n символов, если ранее не будет найден '\n', далее если '\n' введен раньше n то будет удален из буфера и ignore() завершит работу.
2
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 21:09 5
Цитата Сообщение от Erjay Посмотреть сообщение
Никак не могу понять какую роль именно в этой функции играет этот параметр (#)?
В данном примере никакой. Можно просто написать:
C++
1
cin.ignore();
Будет то же самое делать (по умолчанию: ignore(streamsize n = 1, int delim = EOF)).
2
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
06.08.2013, 21:11  [ТС] 6
alsav22, а здесь?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    char ch;
    cout << "Enter a phrase: ";
    while (cin.get(ch))
    {
        if (ch == '!')
            cin.putback('$');
        else
            cout << ch;
        while (cin.peek() == '#')
            cin.ignore (1, '#');
    }
    return 0;
}
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 21:15 7
Если бы так:
C++
1
cin.ignore (10, '#');
то пропустит (извлечёт и отбросит) или 10 символов, или меньше, если встретит раньше '#' или EOF ('#' тоже пропустит ).
2
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
06.08.2013, 21:19  [ТС] 8
alsav22, от когда первое значение большое, то все понятно. Но с 1-ой, как то все запутанно.
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 21:30 9
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Erjay Посмотреть сообщение
а здесь?
То же самое: если следующий символ в потоке чтения '#', то пропускается один символ.
Если написать так:
C++
1
2
while (cin.peek() == '#')
cin.ignore();
, то ничего не изменится.

Добавлено через 1 минуту
Цитата Сообщение от Erjay Посмотреть сообщение
Но с 1-ой, как то все запутанно.
Запутанно именно потому, что так ненужно писать. Можно что-то простое так написать, что долго будешь думать, прежде чем поймёшь, что тут делается.

Добавлено через 3 минуты
С одной стороны, в коде это подсказка, что будет пропускаться именно 1 символ, и именно '#', но если в отрыве от кода рассматривать, то такая запись ни к чему (да и в этом коде ни к чему, из предыдущей строки видно, что '#' будет пропускаться).

Добавлено через 4 минуты
Можно так написать, чтобы было видно в коде, что один символ пропускается:
C++
1
2
while (cin.peek() == '#')
     cin.ignore (1);
5
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2013, 21:30
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru