2016-10-05 70 views
1

说我有一个构造函数接受一个字符串类型向量。 如果其中一个类成员不是一个字符串,而是一个双精度型,我该如何将构造函数中的字符串vector元素转换为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()是一种方法,但在您需要处理转换错误的情况下,你必须做这两个步骤:

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

第二步将是这个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

我站好了。 –

相关问题