永发信息网

string 类型转化为 template T 类型!(C++)

答案:2  悬赏:0  手机版
解决时间 2021-01-27 03:22
希望函数能够将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!
最佳答案
那没办法。因为事先不能知道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 < }
全部回答
你好! 已回答 如还有问题可以追问 如有疑问,请追问。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
批罴的意思是什么啊?知道的请说下!
短袜的英文怎么读
有人知道steam正版的存档在哪吗
小明去体育用品专卖店买乒乓球,买10个还差8.9
华御国际地址在哪,我要去那里办事
金属化合物和金属化合物在什么情况可以反应和
怎样修改别人发来的短信
衣服有不小心弄上油渍怎么办有油没有及时清洗
出入法的意思是什么啊?知道的请说下!
法律面前人人平等的含义是()。
央行加息对市场有什么影响/?
跪求雩梦而生by苼子txt
阆中中学初中什么时候开始上晚自习
目前七眼天珠到底值多少钱
晚上的云,用词语怎样表示?
推荐资讯
如何鉴别牛奶的新鲜度和纯度
美丽会造型会所地址好找么,我有些事要过去
生物实验中的水族箱里生活着水生植物动物还有
本人在微淘上买了价值980元的产品,当初和那
我昨天买了个点烟器装在摩托车上。电门锁有五
手机通话声音小的原因
专业分包需要招标吗
电脑开不了机,是怎么回事?就是玩了一个游戏
坐火车到河北王家井怎么走
某种细胞半个小时由1个细胞分裂成2个5个小时
保释,又不是释放。区别
尤庄居委会地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?