使用运算符>>将C ++ stringstream转换为double

时间:2016-08-24 10:46:27

标签: c++ stringstream

我试图通过重载流输入操作符来读取C ++中的列文件。 这是读取文件中每一行的主要功能:

#include <fstream>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <vector>

using namespace std;
typedef vector <double> record_t;

istream& operator >> ( istream& ins, record_t& record )
{
  record.clear();

  string line;
  getline( ins, line );

  stringstream ss( line );
  double f;
  while (ss >> f)
    record.push_back(f);

  return ins;
}

在大多数情况下都能很好地发挥作用 但对于这一行

55000.003520    -0.009740   0.000721    -0.024600   0.000000

第一个字段存储为55000.0而不是55000.003520 有什么方法可以让它读取所有有效数字的正确值吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

归档问题的答案:

实际上已读入并正确存储该号码。 OP检查的方式是简单地将它传送到cout,它具有非常有限的默认输出精度,因此许多数字只是“舍入”用于打印。