![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
ZZZkoderZZZ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
Вот тут шло обсуждение
http://forum.vingrad.ru/topic-98098.html#st_15_view_0 Вроде как в книгах пишут, что в С++ нельзя использовать printf
Так можно или нет использовать printf в программе на С++ ? |
|||
|
||||
sergioK1 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 |
Нельзя это крайность, С++ поддерживает функции С, и добавляет свои, есть масса причин использовать с функции и другая масса причин не использовать, Однозначного ответа тут нет , а холиварить лень ![]() |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия |
Главный недостаток printf заключен в том, что она не проверяет свои аргументы. В итоге, из-за небольшой ошибки у тебя на x86 будет все хорошо, а на ARM или x86_64 вылезут косяки. Или после изменения типа переменной у тебя перестанет корректно работать этот printf... И ладно если это сразу выводится на экран. А если это случается очень редко, и не для вывода на экран, а для передачи по сети информации банку о списании средств?..
В отличие от printf потоки в С++ подстраиваются под параметры, поэтому многих проблем благодаря им можно избежать. Любители printf могут в С++ использовать boost::format, имеющий похожий синтаксис. А у использующих Qt есть еще более удобный инструментарий - QString::arg. |
|||
|
||||
ZZZkoderZZZ |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
Вообще говоря, printf часто намного удобнее cout, хотя это и не ООП.
Добавлено @ 15:04
Как использовать printf для передачи по сети информации? Добавлено @ 15:12
Значит с printf ошибка будет замечена рано или поздно, а с cout не будет. Что хорошего в том, что функция скрывает ошибки? Это сообщение отредактировал(а) ZZZkoderZZZ - 12.3.2013, 15:13 |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия |
про перенаправление потоков слышал? А потом, кроме printf есть еще fprintf и sprintf.
Подумай хорошенько, что будет в обоих случаях, если ты поменяешь тип переменной с short на long. И с int на MyBigInt. |
|||
|
||||
ZZZkoderZZZ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
Есть подозрение, что MyBigInt не выведется правильно ни с помощью printf ни с помощью cout.
|
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва |
подозрение неверно.
printf в принципе предназначен для определенного перечня типов - встроенных потоки C++ могут быть адаптированы к любому типу, нужно написать функцию
часто для этого необязательно иметь исходники класса |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия |
ZZZkoderZZZ, в случае с printf у тебя все скомпилируется, но работать будет некорректно. А в случае с cout - или не скомпилируется, или работать будет корректно (если конечно, ты не определил оператор вывода в поток, делающим что-то некорректное).
|
|||
|
||||
![]() ![]() ![]() |
Правила раздела «Флейм» | |
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Флейм | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |