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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Макрос для определения количества аргументов. 
V
    Опции темы
azesmcar
Дата 15.3.2017, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Код

template <const char *fmt, typename...T>
void print_func(T... args)
{
    char text[256];
    sprintf(text, fmt, args...);
    std::cout << text << std::endl;
}

extern const char fmt1[] = "hello %d";
extern const char fmt2[] = "bye %d-%d";

auto print_func_1 = print_func<fmt1, int>;
auto print_func_2 = print_func<fmt2, int, int>;

int main()
{
    print_func_1(1);
    print_func_2(2, 3);
}


вот первый вариант
PM   Вверх
borisbn
Дата 16.3.2017, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Я бы ещё это
Цитата(azesmcar @  15.3.2017,  14:36 Найти цитируемый пост)
 char text[256];
    sprintf(text, fmt, args...);
    std::cout << text << std::endl;

заменил бы на

Код
template< typename ... Args >
std::string std_sprintf( const char * fmt, Args ... args )
{
    int size = snprintf( nullptr, 0, fmt, args... );
    std::string result;
    result.resize( size );
    sprintf( const_cast< char* >( result.data() ), fmt, args... );
    return result;
}

Код

...
std::cout << std_sprintf( fmt, args...) << std::endl;



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
azesmcar
Дата 16.3.2017, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(borisbn @  16.3.2017,  18:54 Найти цитируемый пост)
заменил бы на

я бы вообще на boost::format заменил smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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