例如,我有这样的代码,它把来自串数:如何根据内部代码更改返回类型? (字符串数转换)
#include <sstream>
template <typename T>
T string_to_num(const string &Text, T defValue = T())
{
stringstream ss;
for (string::const_iterator i=Text.begin(); i!=Text.end(); ++i)
if (isdigit(*i) || *i=='e' || *i=='-' || *i=='+' || *i=='.')
ss << *i;
T result;
return ss >> result ? result : defValue;
}
问题是它需要两个参数,第二这使得它的线索数目的什么类型的我我正在返回(一个int或一个浮点数等)。
我该如何做到这一点,如果该字符串包含一个小数'。'它返回一个十进制数据类型(例如float),否则返回一个完整的数据类型(例如int)?
除非有人有更好的代码,他们可以共享这样做..?
那是不可能的。字符串是一个运行时值,而类型是在编译时本身确定的。不过你可以使用boost :: any。 – Nawaz
或'boost :: variant',如果你有一组有限的类型。或者,您可以使用其中一种类型来调用函子。 – Yakk
您必须知道类型并调用函数:'strint_to_num(“2.3”);'。删除函数的第二个参数,因为它是多余的。 –
iammilind