使用模板函数重载把各种数据类型转成string格式的key:value,key:vector<T>(value)等
注意模板函数的声明和定义都放在头文件中。
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<map>
template<typename T1,typename T2>
std::string fun(const T1& s,const T2& val){
std::stringstream ss;
ss<<val;
std::string str;
ss>>str;
return s+":"+str;
}
template<typename T1,typename T2>
std::string fun(const T1& s,const std::vector<T2>& val){
std::stringstream ss;
ss<<"[";
int i=0;
for(T2 v:val)
{
ss<<v;
if(i<val.size()-1)
ss<<",";
i++;
}
ss<<"]";
std::string str;
ss>>str;
return s+":"+str;
}
std::string fun(const std::string &key, const char *v)
{
return fun(key,static_cast<std::string>(v));
}
template<typename T1,typename T2>
std::string fun(const std::map<T1,T2>& m){
std::string ret;
for(auto it=m.begin();it!=m.end();it++){
ret=ret+fun(it->first,it->second)+"\n";
}
return ret;
}
int main()
{
std::string key="Key";
std::string res=fun(key,"vvvvv");
std::cout<<res<<std::endl;
return 0;
}