假设我解析了一个文件,并且会得到一个包含各种数据类型的字符串向量。我现在正在寻找像以下这样的功能:
template<typename T>
T convertToType(const std::string& str);
可以进行此转换。理想情况下,我应该能够以某种方式提供我自己的转换函数,即如果T是一个自己的复杂类型。有没有办法每次都把它作为参数传递?
我在想某种:
if(typeof(T) == double)
std::stod(str)
// ...
else
throw std::logical_error("Type not supported yet!");
另一种选择是为每种类型编写模板特化,但是如果我必须再次为每种类型指定它,这似乎使模板函数的使用变得毫无用处......
答案 0 :(得分:1)
这让Joachim的评论变成了答案。
使用std::istringstream
并让输入操作符>>
处理它。
std::istringstream iss(str);
T result;
if (!(iss >> result)) {
throw std::logical_error("Type conversion failed!");
}
return result;