如何根据内码改变返回类型? (字符串到数字转换)

时间:2013-04-14 05:32:40

标签: c++ string int return

例如,我有这个代码从字符串转换为数字:

#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等)的线索。

如果字符串包含小数'',我该如何制作呢?它返回一个十进制数据类型(例如float),否则返回一个完整的数据类型(例如int)?

除非有人有更好的代码,否则他们可以分享这样做..?

1 个答案:

答案 0 :(得分:0)

问题是为什么你需要这个。我想你想要它,只是在调用string_to_num之前摆脱指示类型:

????? number = string_to_num<double>("123.21");
^^^^^
do_something(number);

但是,您已经按<double>指示了类型。一个简单的语法糖,auto就是你想要的。 (这是编译时间)

否则,您需要变体类型,并且它远离您的string_to_num定义。它有很多开销。

您的代码已经正常,输出基于T。所以,在真正的程序中你没有问题。