2016-10-05 8 views
1

私は文字列型のベクトルをとるコンストラクタを持っているとします。 クラスメンバーの1つが文字列ではなくdouble型の場合、文字列ベクトル要素をコンストラクタ内で倍精度に変換するにはどうすればよいですか?コンストラクタ初期化リスト内の値を変換するC++

Foo::Foo(const std::vector<string>& v): 
d(v[0].toDouble()){} 

私はtoDouble()はCで動作しないという++私はちょうど私が何をしたいのかの一例として、ここでそれを入れている認識しています。

ありがとうございました。

+3

http://en.cppreference.com/w/cpp/string/basic_string/stof –

答えて

3

もちろんこれを行う方法ではありません。 std::stod()を使用すると、1つの方法で、しかし、あなたは変換エラーを処理する必要がある場合には、次の2つのステップでこれを行う必要があります:

Foo::Foo(const std::vector<string>& v) : d(convert(v[0])) 
{ 
} 

第2のステップは、このconvert()、プライベート静的メソッドのようになります。

double Foo::convert(const std::string &s) 
{ 
    std::istringstream i(s); 
    double v; 

    i >> v; 
    if (i.fail()) 
    { 
     // Figure out what to do, here 
    } 
    return v; 
} 

あなたの宿題は、変換が失敗した場合の対処方法を把握し、適切な処置を講じることです。

+0

私は訂正しました。 –

関連する問題