Re:
От: Lipatov  
Дата: 28.12.03 17:59
Оценка:
Здравствуйте, KingOfNets, Вы писали:

KON>2 Lipatov


>>>Друг мой, если Вы не знакомы с Cи, то нечего показывать Ваше невежество, к тому же в такой мелкой форме!


KON>Интересно в чем выражается невежество? в ошибке в примере _ecvt? Это не принципиально ,показывется что такая элементарная операция требует создания многих объектов которые в принципе временные и строчек кода когда объекты в принципе должны быть временными на самом деле т.к. добычно в программе далее нигде не используются. здесь рассмаривается вопрос о создании временных обьектов,проектировании ф-ий пеобразований использование для этого исключений.

А помойму, показывается, что человек взял сложную игрушку, покрутил 5 минут в руках, не понял как с ней играть и сильно расстроился. Незнание Си, С++ или китайского языка — не невежество, упаси бог! Но невежественно судить о вещах, о которых имеешь лишь поверхностное представление, да еще так категорично. Эта, действительно, ЭЛЕМЕНТАРНАЯ операция даже не стоит того чтобы о ней говорили! Если один раз не написать char str[12] — счастье, то теплый клозет — просто рай на земле!
Да, кстати, в примере было так:
func(IntToStr(x));
func(FloatToStr(y));

Помойму
char buff[12];
func(itoa(x, buff, 10);
func(_gcvt(y, 15, buff);
Ничуть не хуже (по крайней мере быстрее)

KON>Что требуется от ф-ии то и она должна фозвращать, в случае ошибки вызывать исключение -получается более структурированный и логически правильный код, а не создавать для каждой ф-ии временный обьект и проверять возвращаемое значение — как правило в реальных программах его проверяют через раз на наличие ошибок в ф-ии.


KON>насколько я зная ф-ии c run-time atoi itoa strtod и т.п никогда не генерируют исключений

Вау! Более логически-правильный код! Что бы это значило? Неужели код с исключениями работает более ХОРОШО (быстрее? точнее?) чем код, с проверками возвращаемых значений?
Многие ли программисты не поленяться заключить StrToXxx() в try ... except? Боже, о чем мы спорим!

>>>Вот уж не знал, что в C++ нельзя использовать atoi и strtod!


KON>Вот уж не знал что atoi и strtod работают со классами строк MFC CString или std::string!

Пример:
std::string s = "12345";
atoi(s.c_str()); // а может даже atoi(s), не помню, перегружен ли const char для std::string.

C CString та же фигня.
(вообще, совместимость с CRT — краеугольный камень STL, мне так кажется )

А>>в знакомых мне библиотеках: MFC,STL..

А>>во ВСЕХ классах со строками нет таких преобразований!
А>>в MFC CSting есть функция с неопрделенныч числом параметров format -зачем делать разбор строки формата и неявные преобразования т.к ф-я с неопределенным числом параметров?
KON>Даже обсуждать не буду.
KON>Почему?

Потому, что CString и std::string — это классы, а не примитивы, как соответствующие строки в OP. От них можно наследовать свои классы, и делать с ними что угодно. А потом, эти классы подсовывать вместо базовых в свои программы и ничего не изменится. Что здесь обсуждать?
Насчет неявных преобразований — а в чем проблема? С помощью этих функций можно представить число в любом виде: hex, oct, научная нотация, задать число значащих разрядов (floatig point все таки) и т.д.
И напоследок, одна мысль: помните притчу, про голодного, которому вместо еды дали удочки? Помойму это про С++. С++ может дать не только набор готовых объектов, но и средства для создания своих собственных, ничем не отличающихся. Может это счастье?
PS
Нет, не это.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.