我试图通过重载流输入操作符来读取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
有什么方法可以让它读取所有有效数字的正确值吗?
提前感谢您的帮助!
答案 0 :(得分:0)
归档问题的答案:
实际上已读入并正确存储该号码。 OP检查的方式是简单地将它传送到cout
,它具有非常有限的默认输出精度,因此许多数字只是“舍入”用于打印。