9

我正在尝试将字符串转换为数字。为此,我找到了以下方法:

#include <iostream>
#include <string>

template <typename T>
T stringToNumber(const std::string &s)
{
    std::stringstream ss(s);
    T result;
    return ss >> result ? result : 0;
}

int main()
{
    std::string a = "254";
    int b = stringToNumber(a);

    std::cout << b*2 << std::endl;
}

问题是我收到以下错误:

错误:没有匹配函数调用'stringToNumber(std::string&)'</p>

谁能告诉我为什么我会收到这样的错误以及如何解决它?

先感谢您。

4

2 回答 2

16

尝试

int b = stringToNumber<int>(a);

因为模板类型T不能从任何参数(在这种情况下std::string)推导出来,所以您需要显式定义它。

于 2013-11-09T20:43:55.297 回答
1

您尚未提供模板参数。请注意,在 C++11 中,您可以使用std::stoi

std::string a = "254";
int b = std::stoi(a);
于 2013-11-09T20:56:57.860 回答