sim*_*n-f 0 c++ string concatenation
我需要写一个concat像这样的函数:
std::string concat(...);
Run Code Online (Sandbox Code Playgroud)
接受任意数量的不同类型的参数(char,char *,int,std :: string等),并返回它们的串联。例如:
concat(88,'a',"home",9) == std::string("88ahome9")
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容:
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();
}
Run Code Online (Sandbox Code Playgroud)
或在C ++ 17中,带有可折叠表达式
template<typename ... Ts>
std::string concat(Ts&&...args)
{
std::stringstream ss;
(ss << ... << std::forward<Ts>(args));
return ss.str();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |