Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

[CPP] Console::WriteLine vs printf

Доброго времени суток,comp!

начал изучать си++ с простейшей программы hello_world
И вот первый вопрос:
Что предпочтительнее использовать и какая разница?
Console::WriteLine
printf
cout
?

Работаю в интегрированной среде MS Visual Studio .NET 2003
Если я правильно понял, то Console::WriteLine будет поддерживаться
только Windows-подобными системами, точнее даже, где есть .NET
Framework. Какие плюсы-минусы у этого способа?

Какие плюсы-минусы у printf ? Что-то слышал про переполнение буфера и
прочие бяки у этого способа.

Ответить   Ildar &lit Fri, 19 Nov 2004 02:38:50 +0300 (#267722)

 

Ответы:

Hi Ildar &lit! On Fri, Nov 19, 2004 at 02:38 +0300, you wrote:

Про Console::WriteLine ничего не знаю. printf можно ипользовать но не
рекомендуют, т.к он противоречит ООП. cout инкапсулирует все необходимые
средства вывода, при этом реализуя полиморфизм.

Ответить   ART Sun, 21 Nov 2004 01:18:46 +0500 (#268016)

 

Здравствуйте!

У меня сразу ещё один вопрос по этой теме:
В VC 7.0 не смог организовать sscanf в формат double.
То есть

char s[] = "123.45";
double d = 0.0;
sscanf(s, "%lf", &d);

не работает. Пришлось переправить на float, "%f" - работает.
Кто-нибудь подскажет, в чём дело?

Насколько я понимаю, когда Windows писался, Console::WriteLine не было
:)
Обычно выбирают между prinf и cout.

cout
1. Проще в использовании
2. Поскольку это _объект_ класса ostteam, то обращаясь к нему, Вы
имеете кучу дополнительных методов (загляните в библиотеку
iomainp.h), зато на выполнение программы тратится больше
времени (естественно, для Windows это практически незаметно)
3. Есть возможность ошибиться с форматом вывода

printf

1. Приходится всё время обдумывать формат вывода
2. Работает очень _быстро_ (во много раз быстрее cout!), по сути
это просто ассемблеровский буферизированный вывод! Если у вас
программа выводит миллион строк, то однозначно предпочтительнее
printf, можете протестировать и сами почувствуете разницу.
3. Компилятор всегда контролирует, не ошиблись ли вы с форматом
вывода.

Но если у вас простенькое консольное приложение, которое выводит пару
строк - разница невелика.

Сергей

Номер выпуска : 3815
Возраст листа : 428 (дней)
Количество подписчиков : 507
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/269266
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Tue, 23 Nov 2004 17:17:04 +0200 (#269266)

 

sscanf работает только с float'ом. сканьте во float, затем
присваивайте double'у
или используй atof()

Номер выпуска : 3820
Возраст листа : 429 (дней)
Количество подписчиков : 507
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/269889
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Wed, 24 Nov 2004 12:33:44 +0300 (#269889)