2

C ++のファイルからどのようにdoubleを読み取りますか?

intsの場合、getline()を使用してからatoiを使用できることは知っていますが、関数をdoubleにする配列が見つかりません。doubleを読み込んだり、char配列をdoubleに変換したりするために利用できるものは何ですか?

4

4 に答える 4

3

ストリーム抽出を使用できます。

std::ifstream ifs(...);
double d;
ifs >> d;

この作業では、空白以外のストリーム内の次のデータは、テキスト表現でdoubleである必要があります。

抽出後、ストリームの状態をチェックして、エラーが発生したかどうかを確認できます。

ifs >> d;
if (!ifs)
{
    // the double extraction failed
}
于 2010-04-10T21:36:47.620 に答える
3

atof()やato ..関数の使用を検討しないでください。これらの関数では、エラーを診断できません。strtodstrtolを見てください。または、ストリーム抽出演算子を使用します。

于 2010-04-10T21:44:15.380 に答える
2

疑問に思っていますが、ロケール設定に注意する必要がありますか(たとえば、ロケールで小数部分を区切るためにドットの代わりにコンマを使用できます)、または文字列ストリームは常に標準の「Cロケール」表記にデフォルト設定されますか?

于 2010-04-11T03:19:08.363 に答える
0

istringstreamを活用できます。たとえば、toDoubleとtoIntは次のとおりです。

double toDouble(string s) {
  double r = 0;
  istringstream ss(s);
  ss >> r;
  return r;
}

int toInt(string s) {
  int r=0;
  istringstream ss(s);
  ss >> r;
  return r;
}
于 2010-04-10T21:49:10.923 に答える