2011-09-12 51 views

回答

14

閱讀在C++ 03,使用boost::lexical_cast,或:

std::stringstream ss(the_string); 
long double ld; 
if (ss >> ld) { 
    // it worked 
} 

在C99中,使用strtold

在C89中,使用sscanf%Lg

在C++ 11中使用stold

可能有細微的差別,究竟哪些格式每一個接受,所以首先檢查細節...

+0

+1作爲'if(ss >> ld)'。 – Nawaz

+0

這導致我將正確的方式轉換爲微芯片PIC32上的64位(長雙)字符串。 stdlib.h中的_dstrtod()誰知道?謝謝! – Rob

1

在C++中,我只能推薦boost::lexical_cast(或通常通過IOStreams)。

在c?不知道。

+0

只需在C上爲你提供Matthieu,所有類似的轉換,你可以使用* printf/* scanf – Shahbaz

6

您已經標記爲「C++」你的問題,所以我想給你一個C++回答:

爲什麼不直接使用流?

std::stringstream ss(myString); 
long double x; 
ss >> x;