请注意,一般来说,double
与 不同long double
。
strtod
将字符串转换为double
,但应该使用哪个函数将字符串转换为 long double?
请注意,一般来说,double
与 不同long double
。
strtod
将字符串转换为double
,但应该使用哪个函数将字符串转换为 long double?
在 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
.
每个人接受的格式可能存在细微差别,因此请先检查详细信息...
您已将您的问题标记为“C++”,所以我将给您一个 C++ 答案:
为什么不只使用流?
std::stringstream ss(myString);
long double x;
ss >> x;
在 c++ 中,我只能推荐boost::lexical_cast
(或一般通过 IOStreams)。
在 c ? 不知道。
您可以使用istream
从字符串中读取 long double。见这里http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/
如果您喜欢scanf
函数系列,请阅读%Lf