核心函数
//使用stringstream
void _GenStr(std::stringstream &ss,int idx){
}
template<typename T, typename... Args>
void _GenStr(std::stringstream &ss,int idx,T&& t,Args&&... args){
if ( idx == 0 ){
ss << t;
}
if ( sizeof...(args) > 0 && idx > 0 ){
_GenStr(ss,idx-1,std::forward<Args>(args)...);
}
}
//使用 string
void _GenStrStr(std::string &s,int idx){
}
template<typename T, typename... Args>
void _GenStrStr(std::string &s,int idx,T&& t,Args&&... args){
if ( idx == 0 ){
s.append(std::to_string(std::forward<T>(t)));
}
if ( sizeof...(args) > 0 && idx > 0 ){
_GenStrStr(s,idx-1,std::forward<Args>(args)...);
}
}
其中: 当使用自己定义数据类型时, 使用string时,需要重载std::to_string //效率快 使用stringstream时,需要重载 operator<< //较常见 相比之后,string 比 snprintf 要快, stringstream比 snprintf 要慢,但是对于自定义数据类型,重载<< 比较常由,所以提供两种方式。