2011-11-02 117 views
0

Possible Duplicate:
How can I convert string to double in C++?錯誤:無效從字符串轉換爲double。我如何從字符串轉換爲double?

如何將字符串轉換爲C++中的double?

我有在它的數字的字符串向量,我想將它複製到double類型的載體

while (cin >> sample_string) 
    { 
     vector_string.push_back(sample_string); 
    } 

    for(int i = 0; i <= vector_string.size(); i++) 
    { 
     if(i != 0 && i != 2 && i != vector_string.size()-1) 
      vector_double.push_back((double)vector_string[i]); 
    } 

編輯:我不能使用BOOST

回答

5

我認爲你應該使用與STL一起提供的stringstream類。它使您可以將字符串轉換爲雙精度值,反之亦然。像這樣的東西應該工作:

#include <sstream> 
string val = "156.99"; 
stringstream s; 
double d = 0; 
s << val; 
s >> d; 
+0

我該如何在我的代碼中使用它? – code511788465541441

2

假設你已經安裝了boost

{ 
    using boost::lexical_cast; 
    vector_double.push_back(lexical_cast<double>(vector_string[i])); 
} 

假設你沒有安裝增壓做,添加這個函數模板,並調用它:

template <class T1, class T2> 
T1 lexical_cast(const T2& t2) 
{ 
    std::stringstream s; 
    s << t2; 
    T1 t1; 
    if(s >> t1 && s.eof()) { 
    // it worked, return result 
    return t1; 
    } else { 
    // It failed, do something else: 
    // maybe throw an exception: 
    throw std::runtime_error("bad conversion"); 
    // maybe return zero: 
    return T1(); 
    // maybe do something drastic: 
    exit(1); 
    } 
} 

int main() { 
    double d = lexical_cast<double>("1.234"); 
} 
+0

我無法使用boost – code511788465541441

+0

您可以自己實現lexical_cast,正如我在編輯的答案中所述。 –

0

Boost(其中包括)提供了一個lexical_cast正是您的目的。

相關問題