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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 223
19.06.2014, 02:03     Что делает метод cin.ignore? #1
C++
1
cin.ignore(0,'\n');
Что она делает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 02:03     Что делает метод cin.ignore?
Посмотрите здесь:

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

К примеру,
C++
1
cin.ignore(100, "\n");
Значит, он дает пользователю ввести 100 символов в консоли, и на 101 завершает работу функции ignore.
почти похож на
C++
1
cin.get();
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 223
19.06.2014, 02:09  [ТС]     Что делает метод cin.ignore? #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;
}
Зачем он нужен тут? Если его убрать то перестает нормально работать, но какую роль он в этой функции играет, не пойму
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.06.2014, 02:37     Что делает метод cin.ignore? #6
Цитата Сообщение от Esecman Посмотреть сообщение
К примеру, Код C++1
cin.ignore(100, "\n");
Пример неверный. Тип второго параметра должен быть не const char*, а int.

Добавлено через 4 минуты
Цитата Сообщение от niikiita Посмотреть сообщение
Если его убрать то перестает нормально работать
Если вот это убрать?
C++
1
cin.ignore(0,'\n');
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 223
19.06.2014, 07:07  [ТС]     Что делает метод cin.ignore? #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Если вот это убрать?
Да, второе число не дает ввести
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 08:18     Что делает метод cin.ignore?
Еще ссылки по теме:

C++ Избавиться от cin.ignore()
C++ Как работает Cin.ignore()
C++ Зачем нужна функция cin.ignore()?

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5952 / 5557 / 1787
Регистрация: 18.12.2011
Сообщений: 14,201
Завершенные тесты: 1
19.06.2014, 08:18     Что делает метод cin.ignore? #8
Если убрать cin.ignore(0,'\n');
то ничего не изменится,
а вот если убрать cin.get();
то во входном потоке останется символ "конец строки" ('\n'),
который прочитается как целая строка командой
cin.getline(bvector1, sizeof(bvector1));

Можно оставить что-нибудь типа cin.ignore(999,'\n');
и убрать cin.get();
Тогда при вводе после цифр числа можно печатать любую ересь длиной до 999 символов, и она будет пропущена
Yandex
Объявления
19.06.2014, 08:18     Что делает метод cin.ignore?
Ответ Создать тему
Опции темы

Текущее время: 19:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru