如何在c ++中读取文件中的double

时间:2010-04-10 21:34:29

标签: c++ file-io input double inputstream

如何从C ++文件中读取双精度?

对于int我知道你可以使用getline()然后使用atoi,但我找不到一个双重函数的数组。什么可用于读取双打,或将char数组转换为double?

4 个答案:

答案 0 :(得分:3)

您可以使用流提取:

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

这项工作提供了除了空白之外的其他数据,流中的下一个数据应该是文本表示的两倍。

提取后,您可以检查流的状态以查看是否存在错误:

ifs >> d;
if (!ifs)
{
    // the double extraction failed
}

答案 1 :(得分:3)

不要考虑使用atof()或任何ato ..函数,因为它们不允许您诊断错误。请查看strtodstrtol。或者使用流提取操作符。

答案 2 :(得分:2)

我想知道,是否需要注意区域设置(例如,区域设置可以使用逗号而不是点来分隔小数部分)或者字符串流是否始终默认为某些标准的“C语言环境”表示法?

答案 3 :(得分: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;
}