C ++のファイルからどのようにdoubleを読み取りますか?
intsの場合、getline()を使用してからatoiを使用できることは知っていますが、関数をdoubleにする配列が見つかりません。doubleを読み込んだり、char配列をdoubleに変換したりするために利用できるものは何ですか?
C ++のファイルからどのようにdoubleを読み取りますか?
intsの場合、getline()を使用してからatoiを使用できることは知っていますが、関数をdoubleにする配列が見つかりません。doubleを読み込んだり、char配列をdoubleに変換したりするために利用できるものは何ですか?
ストリーム抽出を使用できます。
std::ifstream ifs(...);
double d;
ifs >> d;
この作業では、空白以外のストリーム内の次のデータは、テキスト表現でdoubleである必要があります。
抽出後、ストリームの状態をチェックして、エラーが発生したかどうかを確認できます。
ifs >> d;
if (!ifs)
{
// the double extraction failed
}
疑問に思っていますが、ロケール設定に注意する必要がありますか(たとえば、ロケールで小数部分を区切るためにドットの代わりにコンマを使用できます)、または文字列ストリームは常に標準の「Cロケール」表記にデフォルト設定されますか?
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;
}