Написать функцию ToString, которая список своих разнотипных аргументов преобразует в строковой значение (типа std::string). Длина списка произвольная. Например, для
int n = 17;
double x = 6.75;
ToString(“;”, 25, 3.7, n, x) ;
где “;” – разделитель между элементами, получим строковое значение “25;3.7;17;6.75”;
Есть такое решение, но оно почему-то не может работать больше чем с одной переменной типа double.
#include
/*if (typeid(t) == typeid(char))
{
char x[] = { t };
a += x;
}
else */
a = to_string(t);
/*a.clear();*/
return a;
}
template
strlen(y.c_str())); };
cout << h(my_x, x_first);
return 0;
}
Ответ
В C++17 это можно будет сделать при помощи fold expression (выражения свертки):
template
В C++11 это делается через разворачивание пака в инициализаторе временного массива:
template
int temp[] = {((ss << t), 0)...};
(void)temp;
return ss.str();
}
В выражении (ss << t), 0 используется оператор запятая, левая часть это сайд-эффект (запись в поток), правая часть - инициализатор элемента массива.
Вместо массива можно использовать список инициализации:
(void)std::initializer_list
Комментариев нет:
Отправить комментарий