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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
delexa
2 / 2 / 1
Регистрация: 02.03.2011
Сообщений: 134
#1

В чем отличия cin.getline от gets? - C++

07.02.2013, 13:23. Просмотров 1196. Ответов 13
Метки нет (Все метки)

Напрмер, записи
C++
1
gets(str)
от
C++
1
cin.getline(str, 1000)
что лучше использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2013, 13:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем отличия cin.getline от gets? (C++):

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

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

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

Отличие getline() от cin.getline() - C++
Чем отличается getline() от cin.getline() ?

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

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

13
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
07.02.2013, 14:34 #2
как больше нравится. но сравнивать было бы корректнее
cin.getline с gets_s
1
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
07.02.2013, 14:42 #3
gets не безопасен в том плане, что не контролирует количество считываемых символов, так что тут лучше будет cin.getline.
Но с другой стороны gets работает быстрее.
1
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
07.02.2013, 14:56 #4
Цитата Сообщение от ya_noob Посмотреть сообщение
gets не безопасен в том плане, что не контролирует количество считываемых символов, так что тут лучше будет cin.getline.
Но с другой стороны gets работает быстрее.
Для безопасности есть gets_s с ним сравнивать корректнее.
И это не повод отказываться от gets_s
1
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
07.02.2013, 15:04 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Для безопасности есть gets_s с ним сравнивать корректнее.
И это не повод отказываться от gets_s
да вообще это сравнение getline и gets не корректно, зачем смешивать c++ и с
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
07.02.2013, 15:09 #6
C - это часть C++. И то как некоторые здесь утверждали "Си устарел" - это совершенная чепуха

Не по теме:

Не уверен, может есть какие-то нюансы языка Си, что не скомпилируются компилятором С++. Скорее всего нет.

1
Croessmah
07.02.2013, 15:15
  #7

Не по теме:

Не все, что скомпилируется Си'шным компилятором, скомпилируется компилятором Си++. Таких кодов вагон и огромная тележка

1
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
07.02.2013, 15:34 #8
а я и не говорю про устаревшие. просто getline работает с одним потоком, а gets с другим и их смешивание я считаю создаст трудности
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
11.02.2013, 13:37 #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение

Не по теме:

Не уверен, может есть какие-то нюансы языка Си, что не скомпилируются компилятором С++. Скорее всего нет.

Банально:
C
1
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
 
int main(void)
{
    int *arr = NULL;
    
    arr = malloc(42 * sizeof(*arr));
    
    return 0;
}
C: compilation successful;
C++: error: invalid conversion from 'void*' to 'int*'
Более того, есть коды, которые на С и на С++ дадут разные результаты. Всем известен пример с sizeof('c').
0
Kastaneda
11.02.2013, 13:44
  #10

Не по теме:

или вот

C
1
2
3
4
void func (n) int n
{
   // body
}
K&R проповедуют этот синтаксис.

0
silent_1991
11.02.2013, 14:28
  #11

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение

Не по теме:

или вот

C
1
2
3
4
void func (n) int n
{
   // body
}
K&R проповедуют этот синтаксис.

Может:
C
1
2
3
4
void func (n) int *n;
{
   /* body */
}
?

0
Kastaneda
11.02.2013, 16:12
  #12

Не по теме:

silent_1991, может. Я честно говоря этим синтаксисом ни разу в жизни не пользовался, так что в голове не отложилось.

0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 17:02 #13
Цитата Сообщение от ya_noob Посмотреть сообщение
gets не безопасен в том плане, что не контролирует количество считываемых символов, так что тут лучше будет cin.getline.
Но с другой стороны gets работает быстрее.
Можно воспользоваться "безопасным" fgets(str, 1000, stdin);
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
11.02.2013, 21:24 #14
Цитата Сообщение от xtorne21st Посмотреть сообщение
Можно воспользоваться "безопасным" fgets(str, 1000, stdin);
gets_s(str, 1000);
https://buildsecurityin.us-cert.gov/...g/300-BSI.html
0
11.02.2013, 21:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 21:24
Привет! Вот еще темы с ответами:

Не работает ни 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...

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; ...

getline(cin,a); - C++
Почемй когда я пишуgetline(cin,a); ничего не выполняется. Т.е. это не выполняется, а всё остальное выполняется! Зачем это вообще сделали в...

cin.getline() - C++
Помагите пожалуйсто.Ввести предложение. Вывести так, чтобы в каждой строке было написано одно слово предложения после пробела.с++ 2006...


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

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

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