Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 104, средняя оценка - 4.84
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
#1

cin.ignore - C++

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

Как работает эта функция?
C++
1
cin.ignore (1, '#');
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2013, 20:38     cin.ignore
Посмотрите здесь:

Избавиться от cin.ignore() - C++
Приветствую всех! Написал простенькую программку для работы с классами. #include "stdafx.h" #include <iostream> using std::cout;...

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

Что делает cin.ignore(); - C++
Поясните мне, какое действие выполняет функция: cin.ignore(); Лучше на примере каком нибудь!(с комментариями) Может быть это что-то...

Как работает Cin.ignore() - C++
Дочитал до главы "Потоки и файлы" и с первого примера началось не понимание. Вот пример: #include <iostream> using namespace...

Не работает getline(cin,s), istream.ignore() - C++
Использую microsoft visual c++ 6.0. не работает: string s; getline(cin,s);//дважды приходиться жать ентер При использовании...

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

Зачем нужна функция cin.ignore()? - C++
Объясните пожалуйста почему если убрать из кода cin.ignore(); , в 55 строке присваиваем n = 1, оно возвращает к началу, и getline(cin,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 20:54     cin.ignore #2
Извлечёт и отбросит(пропустит) из потока чтения один символ.
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
06.08.2013, 21:00  [ТС]     cin.ignore #3
Никак не могу понять какую роль именно в этой функции играет этот параметр (#)?
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
06.08.2013, 21:05     cin.ignore #4
...
getline(buff,max) буффер ввода и макс число символов, при этом удаляет из буфера символ разрыва строки поэтому ввод до первого пробела.
ignore(n,'\n') число пропускаемых символов и символ разделения т.е. проскает n символов, если ранее не будет найден '\n', далее если '\n' введен раньше n то будет удален из буфера и ignore() завершит работу.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 21:09     cin.ignore #5
Цитата Сообщение от Erjay Посмотреть сообщение
Никак не могу понять какую роль именно в этой функции играет этот параметр (#)?
В данном примере никакой. Можно просто написать:
C++
1
cin.ignore();
Будет то же самое делать (по умолчанию: ignore(streamsize n = 1, int delim = EOF)).
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
06.08.2013, 21:11  [ТС]     cin.ignore #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;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 21:15     cin.ignore #7
Если бы так:
C++
1
cin.ignore (10, '#');
то пропустит (извлечёт и отбросит) или 10 символов, или меньше, если встретит раньше '#' или EOF ('#' тоже пропустит ).
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
06.08.2013, 21:19  [ТС]     cin.ignore #8
alsav22, от когда первое значение большое, то все понятно. Но с 1-ой, как то все запутанно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 21:30     cin.ignore
Еще ссылки по теме:

Исправить код, вызывающий cin.ignore(numeric_limits<streamsize>::max()) - C++
Возможно многие знают что если использовать библиотеку windows.h, и функцию cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n'); выдаётся...

Как работает cin.ignore(), именно в том случае, когда он написан без параметров? - C++
Объясните, пожалуйста, как работает cin.ignore(), именно в том случае, когда написан без параметров заранее спасибо!

Не компилирует max в cin.ignore(numeric_limits<streamsize>::max(),'\n') - C++
Компилятор MSVS 2010, проблема с max, как мне это устранить? использовала define, но либо я не там ставила (и библиотеки тоже),...

ignore() - C++
ignore() что эта функция значит и где применяется? Добавлено через 2 минуты вот например тут inf&gt;&gt; ptr-&gt;elfile.data; ...

Как работает метод ignore - C++
Метод ignore удаляет один или несколько символов из области ввода, адрес которой задана первым параметром в методи getline.


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2013, 21:30     cin.ignore #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);
Yandex
Объявления
06.08.2013, 21:30     cin.ignore
Ответ Создать тему
Опции темы

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