まず、その件に関する他の質問を徹底的に調べましたが、何も役に立ちませんでした。文字列を 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
確認し、変換が成功したことを確認します。