我想创建一个使用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;
答案 0 :(得分:1)
您的模板参数不能以这种方式推断出来。您必须明确提供模板参数:
std::cout << stringToNumber<int>("125");