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 に答える