С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Alexfarik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 6
#1

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

10.04.2014, 19:56. Просмотров 1643. Ответов 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.Getline с тремя параметрами (C++):

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

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

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

Cin вместо cin.getline - C++
#include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;fstream&gt; using namespace std; int get_int(int default_value); char name; ...

getline(cin, str) и cin>> - C++
Добрый день. Есть код: ... string str; int N; cin&gt;&gt; N; getline(cin, str); cout&lt;&lt;str&lt;&lt;endl; //Выводит: &lt;пустота&gt; ...

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

14
alsav22
5428 / 4823 / 442
Регистрация: 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
5428 / 4823 / 442
Регистрация: 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
5428 / 4823 / 442
Регистрация: 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
5428 / 4823 / 442
Регистрация: 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
5428 / 4823 / 442
Регистрация: 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
5428 / 4823 / 442
Регистрация: 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
5428 / 4823 / 442
Регистрация: 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
Привет! Вот еще темы с ответами:

Не работает ни cin.Get(), ни cin.Getline() - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;windows.h&quot; #include &quot;string.h&quot; using namespace::std; const...

Какая разница между cin и getline? - C++
1) Какая разница между cin и getline? 2) Почему будет работать &quot;string s=a+&quot; &quot;+b&quot; (где а и b другие переменные типм sting), и не будет...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

С помощью cin.getline считать все строки файла в контейнер (вектор или очередь) - C++
Можете пожалуйсто написать код, где можно с помощью cin.getline считать все строки файла в контейнер (вектор или очередь), потом из...


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

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

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