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