首先,我彻底检查了有关该问题的其他问题,但没有任何帮助。我需要将字符串转换为 long double 类型,但对我没有任何作用。
string a="634.232";
long double x;
x=strtold(a.c_str(),0);
首先,我彻底检查了有关该问题的其他问题,但没有任何帮助。我需要将字符串转换为 long double 类型,但对我没有任何作用。
string a="634.232";
long double x;
x=strtold(a.c_str(),0);
检查错误:
#include <cerrno>
#include <cstdlib>
#include <iostream>
const char str[] = "634.232";
int main()
{
char * e;
errno = 0;
long double val = std::strtold(str, &e);
if (*e != '\0' || errno != 0) { /* error */ std::abort(); }
std::cout << "SUccessfully parsed: " << val;
}
请注意,字符串解析可能会以多种方式失败:字符串可能不代表或不代表一个数字,或者它所代表的数字可能太大而无法适应数据类型。您必须检查所有这些可能性,这就是这段代码正在做的事情。结束指针e
检查我们是否使用了整个字符串,并errno
检查转换是否成功。
strtold
正如KerrekSB建议的那样,应该可以正常工作。
但是,当您检查您的工作时,我建议您使用stold
:http ://www.cplusplus.com/reference/string/stold/
string a{"634.232"};
long double x{stold(a)};