4

请注意,一般来说,double与 不同long double

strtod将字符串转换为double,但应该使用哪个函数将字符串转换为 long double?

4

4 回答 4

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.

每个人接受的格式可能存在细微差别,因此请先检查详细信息...

于 2011-09-12T14:23:33.847 回答
6

您已将您的问题标记为“C++”,所以我将给您一个 C++ 答案:

为什么不只使用流?

std::stringstream ss(myString);
long double x;
ss >> x;
于 2011-09-12T14:19:47.813 回答
1

在 c++ 中,我只能推荐boost::lexical_cast(或一般通过 IOStreams)。

在 c ? 不知道。

于 2011-09-12T14:19:19.513 回答
1

您可以使用istream从字符串中读取 long double。见这里http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/

如果您喜欢scanf函数系列,请阅读%Lf

于 2011-09-12T14:21:34.237 回答