|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.06.2015, 09:37 | #1 |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Как подсунуть переменную в sprintf
Здравствуйте господа гуру С++
Вопрос от чайника С++: Как посдунуть переменную в sprintf, то есть: у меня есть функция Код:
нужно её подсунуть в sprintf(buffer, mask, 20) для формирования строки заданной ширины из числового значения с выравниванием по левому краю 32 => 0000032
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
07.06.2015, 10:23 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Тогда Код:
I'm learning to live...
|
|
07.06.2015, 10:36 | #3 |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Спасибо огромное !
ПРокатило Код:
по поводу классов. Основное требование заказчика - примитивность функций для возможного переноса на разные платформы и компиляторы. п.с. к счастью я не пишу на С++, а всего лишь перевожу написаный на Паскале (Делфи код). Мне как то по душе Делфи =))
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
07.06.2015, 14:12 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
А зачем такие сложности?
Ширину можно передавать в качестве аргумента printf(): printf("%*d", width, value); Ref: http://www.cplusplus.com/reference/cstdio/printf/ |
07.06.2015, 17:25 | #5 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Цитата:
------------ Стоит задача написать функцию следующего вида setvalue(char * dest, uint size, int value) где dest - резултирующий дамп памяти (по сути строка) size - размер строки value - значение ------------ функция используется в конверторе, который заполняет определённые части строки.... например "xxxx00000wwwwyyyaaaaaaaaaa" нужно в знакоместа отмеченные "y" всунуть число 15, причём так, что бы слева были нули, или пробелы. В примитивной части С++ (без VCL составляющей) существует набор функций с корнем "prinf" которые форматируют целое, и формат %0d который дописывает слева нули. Так вот, функция служит для того, чтобы подавая на вход размер нужной мне части я получал нужный результат
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
|
07.06.2015, 17:49 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я, если честно тоже не вижу смысла в _getIntMask, если она именно такая, как представлено здесь. Проще определить константами заранее необходимые шаблоны, а тернарным оператором их применять в sprintf().
I'm learning to live...
|
09.06.2015, 20:42 | #7 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Цитата:
"завтра" могут выпустить новую. версию спецификации формата, появится %13d %14d и.т.п ----------- +добавил "о смысле" Стараюсь писать гибкие универсальные элементы которые могут использоваться в многих случаях. Константа - это плохой тон, который заключается в привязке кода к какому то типу (набору данных). Я так не работаю. Приведу простейший пример, функция пересечения двух отрезков. При написании по методу "давайте зашьём шаблонами все варианты" алгоритм загибается при первой же проверке полностью совпадающих отрезков, или частично перекрывающихся. Простыми словами, все случаи в жизни константами не описать, их будет слишком много.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
Последний раз редактировалось JUDAS; 09.06.2015 в 20:47. |
|
10.06.2015, 08:48 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
10.06.2015, 09:38 | #9 | |||
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Цитата:
Цитата:
А для "всех случаев", существуют массивы, структуры, объединения, классы в конце-концов.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 10.06.2015 в 09:50. |
|||
10.06.2015, 10:10 | #10 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Цитата:
printf("%0*d", size, value) |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
аналог String.Format/sprintf | Пепел Феникса | JavaScript, Ajax | 1 | 14.06.2011 09:51 |
Проблема с sprintf | Slava-D | Общие вопросы C/C++ | 7 | 25.05.2011 14:57 |
Формирование строк как в sprintf() | LukS | Общие вопросы C/C++ | 2 | 15.10.2009 17:28 |
Как подсунуть параметр в Query после Union? | Корчеватель | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 18.05.2009 21:58 |
Ошибка линвки (функция sprintf) | LukS | C/C++ Сетевое программирование | 21 | 25.01.2009 13:58 |