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 経由)。

で?わかりません。

于 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 に答える