我的一個朋友給我發了他的程序。他使用「stod」函數將字符串轉換爲double。有沒有其他的可能性做這樣的事情?C++ stod函數等效
我的編譯器顯示錯誤
我已經包括#include <string> #include <cstdlib>
但一切都沒有改變「STOD並沒有在這個範圍中聲明」。
我的編譯器不使用C++ 11功能。順便說一下,這個程序是作爲一個學校項目編寫的,沒有使用C++ 11的目的。
我的一個朋友給我發了他的程序。他使用「stod」函數將字符串轉換爲double。有沒有其他的可能性做這樣的事情?C++ stod函數等效
我的編譯器顯示錯誤
我已經包括#include <string> #include <cstdlib>
但一切都沒有改變「STOD並沒有在這個範圍中聲明」。
我的編譯器不使用C++ 11功能。順便說一下,這個程序是作爲一個學校項目編寫的,沒有使用C++ 11的目的。
一個快速和骯髒的方式將字符串轉換爲雙會
#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/
您也可以使用'std :: istreamstream ss(text)'代替。 –
感謝您指出。我試圖用分離的步驟提供一個簡單的例子 – RedAgito
std::atof()
是從C語言交付的快速選項,您必須包含<cstdlib>
才能使用它。
否則,您可以使用std :: stringstream來處理它。
#include<sstream>
std::string value="14.5";
std::stringstream ss;
ss<< value;
double d=0.0;
ss>>d;
使用'stringstream' http://www.cplusplus.com/reference/sstream/stringstream/stringstream/ –
需要注意的是,你真的需要'的std :: STOD()';你的朋友可能會在某個地方使用「使用名稱空間標準」。 – Keith
@Keith std :: stod來自C++ 11 – Steephen