模板和stringstream问题

时间:2014-05-17 17:29:56

标签: c++

我想创建一个使用stringstream将字符串转换为数字的函数。如果我想我的号码是int

int stringToNumber(string str)
{
    stringstream ss;
    ss << str;
    int num;
    ss >> num;
    return num;
}
cout << stringToNumber("182") + 100 << endl; //282

此代码正常运行。但是,当我尝试使用模板时,我得到一个错误。以下是我的代码:

template <typename number>
number stringToNumber(string str)
{
    stringstream ss;
    ss << str;
    number num;
    ss >> num;
    return num;
}

错误:

main.cpp: In function ‘int main()’:
main.cpp:17:33: error: no matching function for call to ‘stringToNumber(const char [4])’
     cout << stringToNumber("125") + 280 << endl;
                                 ^
main.cpp:17:33: note: candidate is:
main.cpp:6:8: note: template<class number> number stringToNumber(std::string)
 number stringToNumber(string str)
        ^
main.cpp:6:8: note:   template argument deduction/substitution failed:
main.cpp:17:33: note:   couldn't deduce template parameter ‘number’
     cout << stringToNumber("125") + 280 << endl;

1 个答案:

答案 0 :(得分:1)

您的模板参数不能以这种方式推断出来。您必须明确提供模板参数:

std::cout << stringToNumber<int>("125");