2016-10-05 109 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

我站好了。 –

相關問題