Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зачем использовать старый синтаксис? 
:(
    Опции темы
Anikmar
Дата 10.4.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(Lazin @  10.4.2009,  20:15 Найти цитируемый пост)
cout << format("writing %s,  x=%s : %d-th step \n") % "toto" % 40.23 % 50;

А этой штукой память испортить можно?
PM MAIL ICQ   Вверх
Lazin
Дата 10.4.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



оно type safe
PM MAIL Skype GTalk   Вверх
Cheloveck
Дата 10.4.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Почитайте книгу Скотта Майерса "Эффективное использование C++" и у Вас отпадёт желание использовать сишный синтаксис вообще. Давайте будим прогрессивными и будим различать Си и C++. 
Цитата

"...факт остаётся фактом: операторы scanf и printf далеки от совершенства. В частности они не осуществляют контроль типов и к тому же нерасширяемы. Поскольку контроль типов и расширяемость - краеугольный камень идеологии C++, то лучше всего с самого начала во всём опираться на них. Кроме того, семейство функций printf/scanf отделяют переменные, которые необходимо прочитать или записать, от форматирующей информации, управляющей записью и чтением, в точности так, как это делает FORTRAN. Настало время распрощаться с пятидесятыми." 

Скотт Майерс "Эффективное использование C++. 50 рекомендаций по улучшению ваших программ и проектов", Правило 2 - "Предпочитайте <iostream> использованию <stdio.h>", стр 29



--------------------
user posted image
PM Jabber   Вверх
GoldFinch
Дата 10.4.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(UnrealMan @  10.4.2009,  21:25 Найти цитируемый пост)
wsprintf - нестандартная функция.

user32.wsprintf - это winapi, самая что ни есть стандартная
PM MAIL ICQ   Вверх
Cheloveck
Дата 10.4.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Цитата

user32.wsprintf - это winapi, самая что ни есть стандартная

а с каких пор winapi стали стандартными? =)

Добавлено через 10 минут и 29 секунд
Цитата

cout << format("writing %s,  x=%s : %d-th step \n") % "toto" % 40.23 % 50;

во извращение =)

Код

cout << "writing toto, x= " << 40.23 << " : " << 50 << "-th step" << endl; 

не катит уже?


--------------------
user posted image
PM Jabber   Вверх
Lazin
Дата 10.4.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(GoldFinch @  10.4.2009,  22:11 Найти цитируемый пост)
user32.wsprintf - это winapi, самая что ни есть стандартная 

lol
в user32.dll много разных функций, и что, все они имеют какое-то отношение к стандарту языка?
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 10.4.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

user32.wsprintf - это winapi, самая что ни есть стандартная 

Речь шла о стандартных функциях С++, а так конечно функция "zuzu" из библиотеки "matumba" написанной Васей Пупкиным на первом курсе канализационного факультета университета водопроводчиков - вполне стандартна для этой библиотеки. smile 

Цитата

во извращение =)

Выделить всёкод C++
1:
    
cout << "writing toto, x= " << 40.23 << " : " << 50 << "-th step" << endl; 

не катит уже? 

не всегда, иногда нужно отформатировать строку по конкретному формату. Например если вам понадобится хранить формат в конфигурационном файле и форматировать в соответствии с ним.

Это сообщение отредактировал(а) azesmcar - 10.4.2009, 22:39
PM   Вверх
Cheloveck
Дата 10.4.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Цитата

cout << format("writing %s,  x=%s : %d-th step \n") % "toto" % 40.23 % 50;

во извращение =)

Код

cout << "writing toto, x= " << 40.23 << " : " << 50 << "-th step" << endl; 

не катит уже?


--------------------
user posted image
PM Jabber   Вверх
Lazin
Дата 10.4.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(Cheloveck @  10.4.2009,  22:19 Найти цитируемый пост)

Код

cout << format("writing %s,  x=%s : %d-th step \n") % "toto" % 40.23 % 50;


во извращение =)
    
Код

cout << "writing toto, x= " << 40.23 << " : " << 50 << "-th step" << endl; 


не катит уже?

монгим нравится printf-like синтаксис, он часто встречается в документации, он зачастую удобнее чем iostream, это своеобразный DSL для описания форматирования, одним словом - lingua franca
boost::format совместим с printf и может его заменить, но при этом он безопасен


Это сообщение отредактировал(а) Lazin - 10.4.2009, 22:55
PM MAIL Skype GTalk   Вверх
Dmi3ev
Дата 10.4.2009, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

Никакого. Более того - на современных компиляторах они не работают.
Но до сих пор народ пользуется такими компиляторами как VS6, Borland C++3.1, которые ничего не знают о новых заголовках.

+ к этому хочу добавить, что Borland C++ Builder 6 довольно популярен, а там как раз все по-старому... сведения о популярности я взял с винграда (проводился тут опрос и шестерка лидировала среди остальных), про популярность в сравнении с VS, CodeBlocks  и др. я не говорил, а то сейчас начнется  smile  


--------------------

PM MAIL   Вверх
sdukshis
Дата 11.4.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 23.3.2009

Репутация: нет
Всего: 1



По моему мнению главная проблема printf() и scanf() это не безопасность типов (надо самому смотреть, что пишешь), а именно невозможность расширить функционал на свои собственные классы.

Использование потоков позволяет это сделать легко и очень удобно.

Так же,  не стоит забывать, что потоки позволяют обрабатывать ошибки с помощью исключений.

PM MAIL   Вверх
zim22
Дата 11.4.2009, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Cheloveck @  10.4.2009,  22:05 Найти цитируемый пост)
Почитайте книгу Скотта Майерса "Эффективное использование C++" и у Вас отпадёт желание использовать сишный синтаксис вообще.

почитал.

Цитата

Как ни обидно мне это признавать, в ряде случаев имеет смысл вернуться к старому и проверенному способу(имеется ввиду использование printf, scanf). Во-первых, некоторые реализации операций потоков ввода/вывода менее эффективны, чем соответствующие операции С... И наконец, поскольку классы библиотеки потоков ввода/вывода имеют конструкторы, а функции <stdio.h> - нет, в редких случаях существенным будет порядок инициализации статических объектов и стандартная библиотека С окажется более удобной просто потому, что вы можете пользоваться без опасений.

Скотт Майерс "Эффективное использование C++. 50 рекомендаций по улучшению ваших программ и проектов", Правило 2 - "Предпочитайте <iostream> использованию <stdio.h>", стр 30-31



--------------------
PM MAIL   Вверх
and277
Дата 11.4.2009, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



zim22, выходит Майерс и сам до конца не уверен. smile 

А что папа Страуструп пишет про это? smile 
PM MAIL   Вверх
Cheloveck
Дата 11.4.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



zim22, 
Цитата

...в редких случаях существенным будет порядок инициализации статических объектов...

почему-то я сомневаюсь, что все кругом пишут код, где критична скорость выполнения. Один-два конструктора особо не затормозят. Майерс сделал оговорку, но мог бы и не говорить, тогда бы и никто ничего не узнал, но если читать книгу внимательно, то видно, что он уделяет внимание всем мелочам, а текущая проблема, имхо, мелочь))

Обратите внимание на сабж правила!!!

Это сообщение отредактировал(а) Cheloveck - 11.4.2009, 13:07


--------------------
user posted image
PM Jabber   Вверх
zim22
Дата 11.4.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Cheloveck @  11.4.2009,  13:06 Найти цитируемый пост)
Обратите внимание на сабж правила!!!

В оригинале это было не правило:
Цитата

Item 2:  Prefer <iostream> to <stdio.h>

Т.е. это просто номер пункта.
Лично я printf функции не использую. Потоки проще и удобней.

Это сообщение отредактировал(а) zim22 - 11.4.2009, 13:29


--------------------
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.