Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2012, 17:36   #1
treis1000
Пользователь
 
Аватар для treis1000
 
Регистрация: 16.03.2012
Сообщений: 27
По умолчанию Разница между cout/cin && printf/scanf

Подскажите пожайлуста, по сути дела это 2 одинаковые вещи...которые обозначают ввод и вывод на консольку, только вызываются разными библиотеками: stdio и iostream . Так вот, в чём же разница между ними? Я заметил только, что printf/scanf сложнее оформлять...
Кто владеет информацией, тот владеет миром!
treis1000 вне форума Ответить с цитированием
Старый 20.03.2012, 17:40   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

std::cout && std::cin - это объекты из libcpp.
а printf && scanf - это функции из libc.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.03.2012, 17:46   #3
treis1000
Пользователь
 
Аватар для treis1000
 
Регистрация: 16.03.2012
Сообщений: 27
По умолчанию

Очень признателен за ответ, но я недавно начал изучать плюсы...поэтому про функции и объекты libcpp и libc не знаю...можно по-проще? Это совсем разные вещи? Может с памятью что-то значит?
Кто владеет информацией, тот владеет миром!
treis1000 вне форума Ответить с цитированием
Старый 20.03.2012, 17:50   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

libc - это библиотека языка С.
libcpp - это библиотека языка С++.

С++ ограниченно совместим с С.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.03.2012, 17:52   #5
treis1000
Пользователь
 
Аватар для treis1000
 
Регистрация: 16.03.2012
Сообщений: 27
По умолчанию

Тоесть разницы между ними нету? Можно использовать что больше нравится?
Кто владеет информацией, тот владеет миром!
treis1000 вне форума Ответить с цитированием
Старый 20.03.2012, 17:58   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну вообще да можно.
хотя я предпочитаю в С++ пользоваться средствами последнего.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.03.2012, 18:02   #7
treis1000
Пользователь
 
Аватар для treis1000
 
Регистрация: 16.03.2012
Сообщений: 27
По умолчанию

Спасибо, помог!
Кто владеет информацией, тот владеет миром!
treis1000 вне форума Ответить с цитированием
Старый 20.03.2012, 18:49   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну как сказать... Вообще это принципиально разные вещи...
cout и cin - это потоки. Конкретно cin является экземпляром класса cin, который есть специализация шаблона basic_istream:
Код:
typedef basic_istream<char> istream;
istream cin;
При это basic_istream является потомком шаблона basic_ios, а тот в свою очередь вообще является потомком класса ios_base.
Аналогично и cout - экземпляр класса ostream, являющегося специализацией шаблона basic_ostream.

А printf и scanf - это просто функции, самые что ни на есть обычные.

В силу такого различия у cin и cout есть куча более высокоуровневых возможностей по сравнению с printf и scanf, так же, как и у других потоков. Для справки,
Код:
cout << "Hello, world";
это не просто вызов функции, а вызов оператора operator<<(тип&), являющегося членом класса cout.
Среди возможностей и преимуществ потоков - перегрузка операторов ввода/вывода, использование манипуляторов, единый интерфейс с другими потоками (файловыми, строковыми и прочими).

Если вы пишите на C++ - используйте стандартную библиотеку, т.е. потоки.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какова разница между "int** &a" и "int** a" в кач-ве параметра функции? dollemika Помощь студентам 3 15.01.2012 17:16
Разница между & и bg в *nix Neymexa Операционные системы общие вопросы 2 24.09.2011 10:23
лабораторная работа printf/scanf elenai Общие вопросы C/C++ 2 27.12.2010 10:47
лабораторная работа С++(printf/scanf) elenai Помощь студентам 0 26.12.2010 21:50
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46