2

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

对于整数,我知道你可以使用 getline() 然后使用 atoi,但我没有找到一个数组来加倍函数。什么可用于读取双精度数或将 char 数组转换为双精度数?

4

4 回答 4

3

您可以使用流提取:

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

这项工作提供了除了空格之外,流中的下一个数据应该是文本表示形式的双精度。

提取后,可以查看流的状态,看看是否有错误:

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 回答