![]() |
|
Модераторы: bsa |
![]()
|
|
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
suxxor, я благодаря вам baldina, и borisbn, сохранил в свою личную библотеку тоже такую функцию.
Если, конечно не последуют претесты от вышеназванных кодеров по лицензионным соглашениям Если интересует заключительный вариант, то вот он. Переносимый, универсальный на любой целочисленный тип (включая отрицательные числа). Вывод тоже универсальный: как в юникод, так и в обычную строку. Возвращает длину выведенной строки.
тестирование здесь: http://liveworkspace.org/code/19f5212fafcc...0f437555a875e98 зы: если какие замечания по коду, велкам. |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
volatile, а чего б сразу не взять модуль
и избавиться в цикле от
? P.S. Лицензия MIT Это сообщение отредактировал(а) borisbn - 2.8.2011, 08:25 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
А для кого писалось это? |
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Код - жесть. Уязвим и опасен, я бы сказал, как минимум. Ботай яростно STL, ибо это никогда ревью не пройдет.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Я думал над этим. Тут есть одна маленькая зоковыка. Если число является самым маленьким отрицательным, то этот фокус не проходит. например: signed char c = -128; c = -c; здесь с не станет +128 не опасней обычных itoa(); sprintf(); и т.д. но универсален, в отличии от последних. |
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
volatile, именно поэтому означенные вами функции не рекомендованы к использованию и являются deprecated.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
spyswamp, я прекрасно этими функциями пользуюсь, и никогда у меня лично с ними проблем не было.
этот код я писал не для ревью, а для личных нужд. И меня в плане "безопасности" он вполне устраивает. Напишите пример безопасной, но такой-же эффективной, удобной, и универсальной функции, я буду только рад. Ваши ссылки на применение потоковых функций с применением locale я просмотрел. Считаю что это ни универсально, ни удобно, ни эффективно. Имхо. ЗЫ: Я вообще не очень люблю потоковый вывод (сейчас адепты строгого С++ забросают помидорами). Это сообщение отредактировал(а) volatile - 2.8.2011, 13:32 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
borisbn : volatile 0 : 1 где тут смайлик с посыпанием головы пеплом ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| spyswamp |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Ваша функция не эффективна, не удобна, не универсальна. Ее завалить можно в 1 прием извне. RTFM. А по STL я скажу проще: если используете C++, то и пишите на C++ с использованием соответствующего функционала. До вас уже сотни людей все изучили до подноготной, обернули, написали и соптимизировали. Не надо тут заливать всем в уши ваш бред про любовь и нелюбовь. Дальнейшую дискуссию с вами продолжать не вижу смысла. У вас даже "имхо" неумное оказалось. -------------------- - why you call it beta? - cuz it's betta then nothin' |
||||
|
|||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Кем ? M$-ом ? Если бы мы их слушали, то мы (программисты) каждый год меняли бы технологии (COM, ActiveX, MTS, .Net, Silverlight, etc. - всех не упомнишь). поддерживаю. spyswamp, запиши это
в Си++ с потоками -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
borisbn, по printf() и ее безопасности читани интернеты, а потом уже поддерживай.
По второму вопросу: ты реально думаешь, что я не смогу на потоках это сделать? Добавлено через 9 минут и 40 секунд Это если ты скажешь "да":
Debug: http://dl.dropbox.com/u/943861/projects/tr...f-vs-stream.png А вообще для таких вещей уже давно есть boost::format(). -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
spyswamp, есть у меня знакомый электрик, некоторые вещи иногда он делает не по правилам, не отключая напряжение. это не значит, что напряжение безопасно. но это не значит что он неосторожен: как раз он достаточно осторожен, что бы иногда (когда это эффективнее) работать так.
а потоки в STL не верх совершенства. хотя бы потому, что непросто создать универсальный интерфейс. было б не так, не появились бы подпорки boost::lexical_cast и boost::format. volatile, borisbn, а вот форматирование чисел с разделителями в STL делается таки довольно изящно и удобно. вобщем хорошш спорить |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Да, изящно! |
||||
|
|||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
volatile, не вырывай из контекста. borisbn попросил - я написал. И будьте внимательнее, товарищ велосипедист: "А вообще для таких вещей уже давно есть boost::format()."
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
не говори мне, что мне делать, а я не скажу (дальше - в интернетах) я, наверное, неправильно выразился. я не имел в виду, что этого сделать нельзя. я и сам могу это сделать. я как раз "поддерживал" то, что это будет как, собственно и вышло.
1. Попридержи язык с оскорблениями 2. У меня, в отличие от тебя, есть необходимость собирать проект на многих компьютерах, а не на одном своём рабочем. Ради простого проекта по тому же самому переводу широты/долготы в строку я буст подключать (а главное такскать его за собой) не собираюсь Это сообщение отредактировал(а) borisbn - 2.8.2011, 16:25 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |