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; }

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; },c++,stringstream,C++,Stringstream,第一个字段存储为55000.0,而不是55000.003520 有没有办法让它读取所有有效数字的正确值 提前感谢您的帮助 要将问题的答案存档: 该号码实际上已正确读取和存储。OP检查的方法是通过简单的管道将其输送到cout,这具有非常有限的默认输出精度,因此许多数字只是“四舍五入”用于打印。要将问题的答案存档: 该号码实际上已正确读取和存储。OP检查的方法是通过简单的管道将其传输到cout,这具有非常有限的默认输出精度,因此许多数字只是为了打印而“四舍五入”。您如何检查仅存储了55000.000

第一个字段存储为
55000.0
,而不是
55000.003520

有没有办法让它读取所有有效数字的正确值


提前感谢您的帮助

要将问题的答案存档:


该号码实际上已正确读取和存储。OP检查的方法是通过简单的管道将其输送到
cout
,这具有非常有限的默认输出精度,因此许多数字只是“四舍五入”用于打印。

要将问题的答案存档:


该号码实际上已正确读取和存储。OP检查的方法是通过简单的管道将其传输到
cout
,这具有非常有限的默认输出精度,因此许多数字只是为了打印而“四舍五入”。

您如何检查仅存储了55000.000000?!因为这看起来像是你用来输出实际值的东西,只是简单地四舍五入到一个六位有效数字。我的错误是,如果我用
cout打印输出值,你也可以使用
std::fixed
你如何检查只存储了55000.000000?!因为这看起来像是你用来输出实际值的东西,只是四舍五入到一个六位有效数字。我的错误是,如果我用
cout打印输出值,你也可以使用
std::fixed
55000.003520    -0.009740   0.000721    -0.024600   0.000000