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

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

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

C++ getline(cin,a);
cin.getline() C++
getline(cin, str) и cin>> C++
cin.getline() C++
cin.getline и cin.ignore C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.02.2013, 14:34     В чем отличия cin.getline от gets? #2
как больше нравится. но сравнивать было бы корректнее
cin.getline с gets_s
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
07.02.2013, 14:42     В чем отличия cin.getline от gets? #3
gets не безопасен в том плане, что не контролирует количество считываемых символов, так что тут лучше будет cin.getline.
Но с другой стороны gets работает быстрее.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.02.2013, 14:56     В чем отличия cin.getline от gets? #4
Цитата Сообщение от ya_noob Посмотреть сообщение
gets не безопасен в том плане, что не контролирует количество считываемых символов, так что тут лучше будет cin.getline.
Но с другой стороны gets работает быстрее.
Для безопасности есть gets_s с ним сравнивать корректнее.
И это не повод отказываться от gets_s
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
07.02.2013, 15:04     В чем отличия cin.getline от gets? #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Для безопасности есть gets_s с ним сравнивать корректнее.
И это не повод отказываться от gets_s
да вообще это сравнение getline и gets не корректно, зачем смешивать c++ и с
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.02.2013, 15:09     В чем отличия cin.getline от gets? #6
C - это часть C++. И то как некоторые здесь утверждали "Си устарел" - это совершенная чепуха

Не по теме:

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

Croessmah
07.02.2013, 15:15
  #7

Не по теме:

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

ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
07.02.2013, 15:34     В чем отличия cin.getline от gets? #8
а я и не говорю про устаревшие. просто getline работает с одним потоком, а gets с другим и их смешивание я считаю создаст трудности
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.02.2013, 13:37     В чем отличия cin.getline от gets? #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').
Kastaneda
11.02.2013, 13:44
  #10

Не по теме:

или вот

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

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 */
}
?

Kastaneda
11.02.2013, 16:12
  #12

Не по теме:

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

xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.02.2013, 17:02     В чем отличия cin.getline от gets? #13
Цитата Сообщение от ya_noob Посмотреть сообщение
gets не безопасен в том плане, что не контролирует количество считываемых символов, так что тут лучше будет cin.getline.
Но с другой стороны gets работает быстрее.
Можно воспользоваться "безопасным" fgets(str, 1000, stdin);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 21:24     В чем отличия cin.getline от gets?
Еще ссылки по теме:

C++ Cin вместо cin.getline
C++ Не работает ни cin.Get(), ни cin.Getline()
Отличие getline() от cin.getline() C++

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
11.02.2013, 21:24     В чем отличия cin.getline от gets? #14
Цитата Сообщение от xtorne21st Посмотреть сообщение
Можно воспользоваться "безопасным" fgets(str, 1000, stdin);
gets_s(str, 1000);
https://buildsecurityin.us-cert.gov/...g/300-BSI.html
Yandex
Объявления
11.02.2013, 21:24     В чем отличия cin.getline от gets?
Ответ Создать тему
Опции темы

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