2015-05-25 353 views
3

我的一個朋友給我發了他的程序。他使用「stod」函數將字符串轉換爲double。有沒有其他的可能性做這樣的事情?C++ stod函數等效

我的編譯器顯示錯誤

我已經包括#include <string> #include <cstdlib>但一切都沒有改變「STOD並沒有在這個範圍中聲明」。

我的編譯器不使用C++ 11功能。順便說一下,這個程序是作爲一個學校項目編寫的,沒有使用C++ 11的目的。

+0

使用'stringstream' http://www.cplusplus.com/reference/sstream/stringstream/stringstream/ –

+0

需要注意的是,你真的需要'的std :: STOD()';你的朋友可能會在某個地方使用「使用名稱空間標準」。 – Keith

+0

@Keith std :: stod來自C++ 11 – Steephen

回答

0

一個快速和骯髒的方式將字符串轉換爲雙會

#include <sstream> 
#include <string> 

std::string text; 
double value; 
std::stringstream ss; 
ss << text; 
ss >> value; 

但要注意驗證正確的轉換所需的錯誤檢查

編輯:您將需要測試的stringstream與

if (ss.fail()) { /* error */ } 

源故障http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/

+0

您也可以使用'std :: istreamstream ss(text)'代替。 –

+0

感謝您指出。我試圖用分離的步驟提供一個簡單的例子 – RedAgito

4

std::atof()是從C語言交付的快速選項,您必須包含<cstdlib>才能使用它。

否則,您可以使用std :: stringstream來處理它。

#include<sstream> 

    std::string value="14.5"; 
    std::stringstream ss; 
    ss<< value; 

    double d=0.0; 
    ss>>d;