Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/46: Рейтинг темы: голосов - 46, средняя оценка - 4.87
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
1

cin vs scanf

20.03.2009, 10:48. Показов 8527. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, объясните мне, почему многие предпочитают функцию scanf? ИМХО, cin для ввода данных гораздо проще... Может кто знает, что да как, да меня просветит темного.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2009, 10:48
Ответы с готовыми решениями:

Cin точнее scanf?
Здравствуйте. Во время написания кода и попытки понимания возникновения ошибки, отправил на проход...

Операторы cin и scanf
Пример кода: void func(float* p){ cout << "Введите значение"; scanf("%f\n", &p); } Как...

Из scanf в std::cin
Как тоже самое сделать с помощью std::cin? printf("Введите автора %d книги.\n",i+1);...

Переделаем вместе scanf() в cin>>
Был исходник: void Comp::Get() // Ввод данных с клавиатуры =) { printf ("\n Введите...

30
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
20.03.2009, 11:21 2
Отлично реализован форматированный ввод. Да и С это мне С больше нравится, чем С++.
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
20.03.2009, 11:22 3
Время от времени использую sscanf, sprintf. Удобные штуки.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
20.03.2009, 11:25  [ТС] 4
всегда мне говорили не мешай в кучу с и с++...
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
20.03.2009, 11:57 5
Правильно говорили
Потому что в С++ я использую cin
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
20.03.2009, 12:01  [ТС] 6
Vourhey, ну я еще не волшебник, только учусь))) просто со сканфом вечно траблы... юзаю только, когда не лень помогать студентам на форуме, вот и всех тонкостей не знаю...


а еще, Vourhey, ты знаешь, почему нельзя их мешать эти два языка?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
20.03.2009, 13:06 7
Да почему, можно. Но некрасиво.
Если ты подключил, например, iostream со своими потоками, то зачем подключать, например, stdio, который опять для себя откроет strin, stdout и т. д? Смысла нет.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
20.03.2009, 13:50  [ТС] 8
я просто слышал, что такое лучше не делать... понятное дело, что можно... просто думал есть какие-то причины избегать этого, глобальные и зловещие)))
я слышал что-то про возможные проблемы из-за возможности переопределения функций в с++... вот про си точно не знаю, но вроде бы нет такой возможности
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.03.2009, 13:53 9
http://bookc.narod.ru/bb13.html

насчёт cin не знаю, так как не изучал
0
Флудер
195 / 33 / 11
Регистрация: 23.03.2007
Сообщений: 334
20.03.2009, 18:15 10
scanf использовать удобней, ибо понятней как он работает с типами данных.
так же как и printf.
а потоки уже давненько не применял, т.к. негде.

Помню давным-давно "врачи" мне посоветовали использовать printf.
0
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
20.03.2009, 19:31 11
кто на Си шкодит вот им и scanf
да он и побыстрее,ручное форматирование
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
22.01.2011, 21:37 12
нужно ввести три числа разделенные '/'
в случае со scanf( " %d/%d/%d ", &a, &b, &c); все вроде просто.
а как быть с cin?
0
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
22.01.2011, 22:12 13
Цитата Сообщение от no0ker Посмотреть сообщение
нужно ввести три числа разделенные '/'
Как часто тебе требуется ввести три числа, разделенные '/' ?

Добавлено через 50 секунд
обычно вводим числа через пробел или через Enter. И причем тут '/' ?
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.01.2011, 22:17 14
RUSya82, дата например
потом через потоки все таки довольно неудобно выводить, манипуляторы прямо не самое удобное, что придумали в жизни
stringstream довольно тяжеловесная замена sprintf
вообщем я не понимаю фанатизма когда нельзя использовать printf
а вот со scanf'ом еще можно подумать
0
no0ker
22.01.2011, 22:18
  #15

Не по теме:



RUSya82, не часто. но бывает.

alex_x_x, ну ты телепат! =)

0
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
22.01.2011, 22:43 16
Ну да, наверное вы в чем то правы, но в большинстве программ( а писал я только по учёбе), мне было проще использовать cin, чем scanf.
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
22.01.2011, 22:50 17
Большинство использующих сишные функции просто не понимают идеологии С++ (или просто не дружат со стандартной библиотекой ). Преимущество потокового ввода - строгая типизация и защита от потенциальных ошибок, а семейство функций print/scan работают с переменными как с сырой памятью, слабо типизированы и подвержены ошибкам. Ну а тем кому охота разбирать строки - С++ предоставляет reg exp.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.01.2011, 23:11 18
ну вообщем единственная проблема безопасность, ну я помню подобная тема была
все сошлись, что когда появятся шаблоны с переменным числом параметров - всем будет щастье
0
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
22.01.2011, 23:41 19
У обоих подходов есть плюсы и минусы. Использование той или иной технологии должно базироваться на разумности и соответствии поставленной задаче. Не стоит так же забывать об унификаци и стайл гайдах проекта.
Смешивание тоже может быть полезно. Например, логирование хорошо реализуется при помощи потоков, а интернационализация облегчается при использовании stdio за счет динамического позиционирования переменных.
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
23.01.2011, 09:07 20
может быть вот так?
C++
1
2
3
char i; 
int a, b;
cin >> a >> i >> b;
Добавлено через 15 секунд
может быть вот так?
C++
1
2
3
char i; 
int a, b;
cin >> a >> i >> b;
0
23.01.2011, 09:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2011, 09:07
Помогаю со студенческими работами здесь

Scanf vs cin (double variant)
double k = 0.0; scanf("%f", &k); double k1 = 0.0 cin >> k1; Вводим -1,5. Получаем: k =...

Заменить cin cout на printf scanf
Преподаватель не хочет принимать код по минимальному основанию системы счисления , из-за того, что...

Заменить cin / cout на scanf / printf
#include<iostream> #include<locale.h> #include<Windows.h> #include<string> #include "123.h"...

Переделать scanf и printf в cin и cout
#include "stdio.h" #include "math.h" int main() { float S=0; int n=3; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru