我需要编写一个函数concat
,如:
std::string concat(...);
接受任意数量的参数 各种类型(char,char *,int,std :: string,...) 并返回它们的串联。例如:
concat(88,'a',"home",9) == std::string("88ahome9")
答案 0 :(得分:5)
您可以使用以下内容:
template<typename ... Ts>
std::string concat(Ts&&...args)
{
std::stringstream ss;
const int dummy[] = {0, (ss << std::forward<Ts>(args), 0)...};
static_cast<void>(dummy); // avoid warning for unused variable
return ss.str();
}
或在C ++ 17中,使用折叠表达式
template<typename ... Ts>
std::string concat(Ts&&...args)
{
std::stringstream ss;
(ss << ... << std::forward<Ts>(args));
return ss.str();
}
答案 1 :(得分:0)
您可以在sstream库中使用ostringstream convert函数。
您可以从
这样的行开头ostringstream convert;
然后使用&lt;&lt;运算符转换您希望的变量(或&gt;&gt;转换为字符串),如:
int var = 98;
转换&lt;&lt;变种;
然后将其存储在一个字符串中:
字符串结果;
result = convert.str();
该字符串现在将包含int的内容!
Ofc你可以使用if语句来区分输入为chars,int等。并将最后的所有字符串组合起来以便将它们连接起来。
对不起拼写和格式,电话xD