0

私の問題は次のとおりです。文字列を double に変換しようとしています。この上:

string str = "1.1";
double d = atof(str.c_str());

しかし、これは機能しません。単純に 1 を返します。

しかし、私が試してみると:

string str = "1,1";
double d = atof(str.c_str());

1.1 を返します。

それは本当に奇妙です。「、」と書くと数字しか理解できないようですが、「.」として返されます。

これを解決して「1.1」も変換する方法はありますか?

4

1 に答える 1

7

この関数はロケールを認識しているため、現在のロケール設定に従って数値を解析します。

はCライブラリの一部であるためatof、設定を変更するにはCライブラリを使用する必要があります。チェックアウトclocale

また、 C ++機能( 、)を使用してデータを解析するlocale場合に使用する必要があるC++も参照してください。Cの場合のようにグローバルロケールを変更しないように、ストリームへのロケールを設定できます。stringistringstreamimbue

于 2012-06-22T11:33:30.140 に答える