string 类型转化为 template T 类型!(C++)
解决时间 2021-01-27 03:22
- 提问者网友:雾里闻花香
- 2021-01-26 12:55
希望函数能够将string 类型转化为template T 类型,
比如string("1") 转化为int 1;
string("1234")转化为int 1234;
string("192.168.1.1") 转化为string("192.168.1.1") (不变);
下面是我写的函数:
template T Config::string_to_T(const string& s){
T t;
istringstream ist(s);
ist >> t;
return t;
}
但是有问题就是当我想将string(“1 2 3 4”)也作为string 类型返回时,却返回的只有一个4!
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-01-26 14:11
那没办法。因为事先不能知道T到底是什么类型,所以只能用ist >> t;这种形式。
而万一你要把string(“1 2 3 4”)输入到一个int里,要是按你处理string的方法,那岂不是又会出错吗?
如果你不嫌麻烦的话,可以考虑用类的特化。如下所示:
#include
#include
using namespace std;
template
class Config
{
public:
T string_to_T(const string& s);
};
template
T Config::string_to_T(const string& s){
T t;
istringstream ist(s);
ist >> t;
return t;
}
//对string的模板特化
template<>
string Config::string_to_T(const string& s)
{
istringstream ist(s);
string t;
getline(ist, t, '\n');
return t;
}
int main(void)
{
Config confInt;
int a = confInt.string_to_T(string("1 2 3 4"));
cout<< a <
Config conString;
string str = conString.string_to_T(string("1 2 3 4"));
cout<< str <
}
全部回答
你好!
已回答 如还有问题可以追问
如有疑问,请追问。
我要举报
大家都在看
推荐资讯