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

Как работает Cin.ignore() - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как идти по строке с конца к середине и сравнивать буквы http://www.cyberforum.ru/cpp-beginners/thread1225225.html
#include <iostream> using namespace std; int main(){ string str1; string str2; .................................//идти по строке с концов к середине и сравнивать символы .................................// Если соответствующие символы не равны, то делаем их равными system("pause"); }
C++ Написать программу, которая будет выводить значения АЧХ и ФЧХ по заданным параметрам Здравствуйте помогите пожалуйста написать программу которая будет выводить значения АЧХ и ФЧХ по заданным параметрам R (сопротивления) L(индуктивности) C(ёмкости) ну и диапазона частот. программа нужна для последовательно-колебательного контура , помогите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1225221.html
C++ Удалите из массива все столбцы, состоящие только из положительных элементов
Удалите из массива A все столбцы, состоящие только из положительных элементов
C++ Сравнение переменных разных типов
Здравствуйте. Столкнулся с проблемой не совпадения типов данных. Есть переменная string str, которая, к примеру, имеет значение "1245". Необходимо в переменную string str2 записать все остальные цифры без нуля (то есть 36789). Сам код написал, но проблема в том, что при сравнении string и int (счетчик цикла) выводит всегда false. Как можно исправить/избежать это? Вот сам код: for(int x = 0; x <...
C++ Не выводятся все числа Армстронга http://www.cyberforum.ru/cpp-beginners/thread1225192.html
Нужно вывести 4-хзначные числа Армстронга. Одно дает, другое не правильное. Должно получиться 1634, 8208, 9474 Подскажите в чем проблема. Исправьте, если можно #include <stdio.h> // Подключаем #include <conio.h> // модули //1634, 8208, 9474 int main() { int x, y, z, n, j, a, st1, st2, st3, st4;
C++ Удалите из массива A(n,m) все столбцы, в которых первый элемент принадлежит отрезку [b,c] удалите из массива A(n,m) все столбцы, в которых первый элемент принадлежит отрезку . но в этом коде строчки по идеи не удаляются, а в 0-е превращаются, да и не ищет он элементы, помогите исправить #include <iostream> #include <stdafx.h> #include <stdio.h> #include <conio.h> #include <math.h> подробнее

Показать сообщение отдельно
dicros
 Аватар для dicros
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 63
09.07.2014, 22:55     Как работает 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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(0, "Rus");
    int i;
    while (true)
    {
        cout << "\nВведите целое число: ";
        cin >> i;
 
        if (cin.good())
        {
            cin.ignore(10, '\n');
            break;
        }
 
        cin.clear();
        cout << "Неправильный ввод данных!";
        cin.ignore(10, '\n');
    }
 
    cout << "Целое число: " << i << endl;
return 0;
}

Не могу понять каким образом работает cin.ignore(10, '\n');
В книжке про нее не особо доступно написано, поэтому полазил в интернете и нашел более понятное описание. Вот пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream> 
using namespace std;
int main()
{
    char chararray[10];
    cout << "Type 'abcdef': ";
    cin.ignore(5, 'c');
    cin >> chararray;
    cout << chararray << endl;
 
return 0;
}
Т.е она попросту выкидывает из введенной строчки первые 5 символов и выводит остальные, или если встречает символ 'c' допустим на 3 позиции то выкидывает все что было до него и его самого и дальше выводит все что осталось.

****************************************************************************

Вопрос касательно первого примера, объясните пожалуйста как там это все происходит не могу понять совершенно.
Вот допустим я ввожу число 5, соответственно у нас выполняется условие if (cin.good()) и там первым же идет cin.ignore(10, '\n'); который по идеи и очистит мое число 5 и в результате ничего в потоке не останется. Так каким же образом получается число???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru