你可能还在使用atoi、atof、itoa等函数进行类型转换,赶紧看过来,用一个函数,解决所有支持io流类型的转换。
//基础类型转换
template<typename OUT,typename IN, typename std::enable_if<!std::is_same<OUT, IN>::value, int>::type N = 0>
OUT Convert(const IN& val)
{
std::stringstream ss;
ss << val;//向流中传值
OUT result;//这里存储转换结果
ss >> result;//向result中写入值
return result;
}
//输入、输出类型一致
template<typename OUT,typename IN, typename std::enable_if<std::is_same<OUT, IN>::value, int>::type N = 0>
OUT Convert(const IN& val)
{
std::cout << "same" << std::endl;
return val;
}
测试代码:
int main()
{
std::cout << Convert<int>("123") << std::endl;
std::cout << Convert<int>(567) << std::endl;
std::string str = "789.45";
std::cout << Convert<double>(str) << std::endl;
std::cout << Convert<std::string>(46.89) << std::endl;
return 0;
}
来源:oschina
链接:https://my.oschina.net/u/3312209/blog/4294008