Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Alexfarik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 6
#1

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами

10.04.2014, 19:56. Просмотров 1787. Ответов 14
Метки нет (Все метки)

Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать вторую часть после использования getline, вот кусок того, что я написал. Ничего адекватно написанного не нашел.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void part(){
    char str[100], str2[100], ogr;
    cout << "Введите ограничитель" << endl;
    cin >> ogr;
    cout << "Использование getline:" << endl;
    cout << "Вводите строку" << endl;
    cin.getline(str, 100, ogr);
    cout << "Строка после getline: " << str << endl;
    cout << str << endl;
    system("pause");
    system("cls");
    cout << "Использование get:" << endl;
    cout << "Вводите строку" << endl;
    cin.get(str2, 100, ogr);
    cout << "Строка после get: " << str2 << endl;
    system("pause");
    system("cls");
    cin.clear();
    fflush(stdin);
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2014, 19:56
Ответы с готовыми решениями:

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита...

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

Отличие функции cin.get и cin.getline
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем,...

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

Не работает ни cin.Get(), ни cin.Getline()
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include...

14
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.04.2014, 05:17 #2
Цитата Сообщение от Alexfarik Посмотреть сообщение
как из потока достать вторую часть после использования getline
О какой второй части речь?
0
IrineK
Заблокирован
11.04.2014, 05:27 #3
Цитата Сообщение от Alexfarik Посмотреть сообщение
как из потока достать вторую часть после использования getline
С ограничителем?
Никак.
Читаем первоисточник:
delim
Explicit delimiting character: The operation of extracting successive characters stops as soon as the next character to extract compares equal to this.
Т.е., в исходнике прописан break; в соответствующем цикле.
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.04.2014, 05:50 #4
Цитата Сообщение от Alexfarik Посмотреть сообщение
как из потока достать вторую часть после использования getline
Достать - в смысле, прочитать в другую строку?
Если так сделать и ввести два ограничителя, то следующий cin.get() и прочитает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
char str[100], str2[100], ogr;
    cout << "Введите ограничитель" << endl;
    cin >> ogr;
    cout << "Использование getline:" << endl;
    cout << "Вводите строку" << endl;
    cin.getline(str, 100, ogr);
    cout << "Строка после getline: " << str << endl;
    //cout << str << endl;
    system("pause");
    //system("cls");
    cout << "Использование get:" << endl;
    cout << "Вводите строку" << endl;
    cin.get(str2, 100, ogr);
    cout << "Строка после get: " << str2 << endl;
    system("pause");
    system("cls");
    cin.clear();
    fflush(stdin);
Или достать - в смысле, просто убрать из потока то, что осталось в потоке после разделителя?
1
Миниатюры
Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами  
IrineK
Заблокирован
11.04.2014, 05:53 #5
Цитата Сообщение от alsav22 Посмотреть сообщение
убрать из потока то, что осталось в потоке после разделителя?
Ага.
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.04.2014, 05:57 #6
Если убрать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    char str[100], str2[100], ogr;
    cout << "Введите ограничитель" << endl;
    cin >> ogr;
    cout << "Использование getline:" << endl;
    cout << "Вводите строку" << endl;
    cin.getline(str, 100, ogr);
    while (cin.get() != '\n');
    cout << "Строка после getline: " << str << endl;
    //cout << str << endl;
    system("pause");
    //system("cls");
    cout << "Использование get:" << endl;
    cout << "Вводите строку" << endl;
    cin.get(str2, 100, ogr);
    cout << "Строка после get: " << str2 << endl;
    system("pause");
    system("cls");
    cin.clear();
    fflush(stdin);
1
IrineK
Заблокирован
11.04.2014, 06:15 #7
Понятно - все остается в потоке.
Спасибо)
0
Alexfarik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 6
11.04.2014, 17:00  [ТС] #8
Достать 2ую часть из потока, чтобы не было так, как на скрине, возможно я не уловил принцип.
0
Миниатюры
Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами  
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.04.2014, 21:53 #9
Цитата Сообщение от Alexfarik Посмотреть сообщение
Достать 2ую часть из потока
Тут правильнее говорить: очистить поток после getline(). Достать - подразумевает дальнейшее использование того, что достаётся. Если очистить поток, то код в 6 посте.

Добавлено через 6 минут
....
0
Alexfarik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 6
11.04.2014, 22:00  [ТС] #10
Вот, в дальнейшем использовании (хотя бы нормальном выводе) я и заинтересован
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.04.2014, 22:25 #11
Цитата Сообщение от Alexfarik Посмотреть сообщение
в дальнейшем использовании (хотя бы нормальном выводе)
Нормальном выводе чего? Того, что осталось в потоке, после чтения из него getline() до разделителя?
0
Alexfarik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 6
12.04.2014, 20:58  [ТС] #12
Да, того, что осталось после ограничителя
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.04.2014, 21:43 #13
Цитата Сообщение от Alexfarik Посмотреть сообщение
Да, того, что осталось после ограничителя
Всё уже написано, и показано. И так, и этак.
0
Alexfarik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 6
13.04.2014, 01:12  [ТС] #14
Я понимаю, как это жутко выглядит, но можете попробовать с буквенными данными, то есть как у меня на скрине?
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.04.2014, 01:25 #15
Цитата Сообщение от Alexfarik Посмотреть сообщение
можете попробовать с буквенными данными, то есть как у меня на скрине?
Могу.
1
Миниатюры
Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами  
13.04.2014, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 01:25

getline(cin, str) и cin>>
Добрый день. Есть код: ... string str; int N; cin&gt;&gt; N; getline(cin, str);...

Cin вместо cin.getline
#include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;fstream&gt; using namespace...

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


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

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

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