c ++:将所有参数连接为字符串的函数

时间:2014-07-22 11:38:01

标签: c++ string concatenation

我需要编写一个函数concat,如:

std::string concat(...);

接受任意数量的参数 各种类型(char,char *,int,std :: string,...) 并返回它们的串联。例如:

concat(88,'a',"home",9) == std::string("88ahome9")

2 个答案:

答案 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();
}

Live example

或在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