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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 226
#1

Что делает метод cin.ignore? - C++

19.06.2014, 02:03. Просмотров 2258. Ответов 7
Метки нет (Все метки)

C++
1
cin.ignore(0,'\n');
Что она делает?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 02:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что делает метод cin.ignore? (C++):

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

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

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

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

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

Что делает cin.get - C++
Вот код: #include <iostream> int main() { int a; std::cin >> a; std::cin.putback ('A'); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
19.06.2014, 02:05 #2
пропускает n количество символов. в данном случае 0
0
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 226
19.06.2014, 02:06  [ТС] #3
Цитата Сообщение от Esecman Посмотреть сообщение
пропускает n количество символов. в данном случае 0
Тогда в чем смысл данной операции ?
0
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
19.06.2014, 02:08 #4
Maximum number of characters to extract (and ignore).

К примеру,
C++
1
cin.ignore(100, "\n");
Значит, он дает пользователю ввести 100 символов в консоли, и на 101 завершает работу функции ignore.
почти похож на
C++
1
cin.get();
0
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 226
19.06.2014, 02:09  [ТС] #5
Цитата Сообщение от Esecman Посмотреть сообщение
К примеру, cin.ignore(100, "\n");
Значит, он дает пользователю ввести 100 символов в консоли, и на 101 завершает работу(cin.ignore()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int main()
{
    int osnovanie;
    cout << "Введите основание: " << endl;
        cin >> osnovanie;
    cin.ignore(0,'\n');
    cin.get();
    char bvector1[100]; char bvector2[100]; unsigned char rezult[100];
    cout << "Введите первое число: " << endl;
        cin.getline(bvector1, sizeof(bvector1));
    cout << "Введите второе число: " << endl;
    cin.getline(bvector2, sizeof(bvector2));
    int L1 = strlen(bvector1);
    int L2 = strlen(bvector2);
    for (int i = 0; i < L1 + L2; i++) rezult[i] = 0;
    for (int i = L2 - 1; i >= 0; i--)
    {
        for (int j = L1 - 1; j >= 0; j--)
        {
            rezult[j + i + 1] += ((bvector1[j] >= 'A' && bvector1[j] <= 'F') ? 10 +  bvector1[j]-'A' : (bvector1[j] - '0')) * ((bvector2[i] >= 'A' && bvector2[i] <= 'F') ? 10 +  bvector2[i]-'A' : (bvector2[i] - '0'));
            if (rezult[j + i + 1] > osnovanie - 1) {
                rezult[i + j] += rezult[j + i + 1] / osnovanie;
                rezult[j + i + 1] %= osnovanie;
            }
        }
        if (rezult[L1 + i ] > 9)
            rezult[L1 + i ] = 'A' + rezult[L1 + i ] - 10;
        else rezult[L1 + i ] += '0';
    }
    rezult[L1 + L2] = '\0';
    for (int i = 0; i < L1 ; i++)
    {
        if (rezult[i] > 9)
            rezult[i] = 'A' + rezult[i] - 10;
        else rezult[i] += '0';
    }
    cout << rezult;
    return 0;
}
Зачем он нужен тут? Если его убрать то перестает нормально работать, но какую роль он в этой функции играет, не пойму
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.06.2014, 02:37 #6
Цитата Сообщение от Esecman Посмотреть сообщение
К примеру, Код C++1
cin.ignore(100, "\n");
Пример неверный. Тип второго параметра должен быть не const char*, а int.

Добавлено через 4 минуты
Цитата Сообщение от niikiita Посмотреть сообщение
Если его убрать то перестает нормально работать
Если вот это убрать?
C++
1
cin.ignore(0,'\n');
0
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 226
19.06.2014, 07:07  [ТС] #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Если вот это убрать?
Да, второе число не дает ввести
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
19.06.2014, 08:18 #8
Если убрать cin.ignore(0,'\n');
то ничего не изменится,
а вот если убрать cin.get();
то во входном потоке останется символ "конец строки" ('\n'),
который прочитается как целая строка командой
cin.getline(bvector1, sizeof(bvector1));

Можно оставить что-нибудь типа cin.ignore(999,'\n');
и убрать cin.get();
Тогда при вводе после цифр числа можно печатать любую ересь длиной до 999 символов, и она будет пропущена
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 08:18
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.06.2014, 08:18
Ответ Создать тему
Опции темы

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