我正在尝试从文件中获取浮点值以在我的程序中使用它们。我使用以下论坛来构建程序Read file line by line .
但这样做获得的值似乎在最后被截断了。
我的代码
#include <iostream>
#include <cstring>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
ifstream file;
file.open("test_file.ssv");
string line;
while(file.good() && (getline(file, line)))
{
istringstream iss(line);
double a, b, c;
iss >> a >> b >>c ;
cout << a <<endl;
}
file.close();
return (0);
}
我获得的输出是
9292.31
32432.2
虽然我的文件有以下数据
9292.3123 4234.66 342.25423
32432.2423 3423.656 341.67841
对此有何改进建议?
最佳答案
您的标准流可能具有较低的浮点精度,因此当使用 std::cout
输出 float
时,您只能看到一些小数。使用 std::ios_base::precision
提高精度,并研究使用 std::ios::floatfield
输出固定或科学精度,例如:
// modify precision
#include <iostream> // std::cout, std::ios
int main () {
double f = 3.14159;
std::cout.unsetf ( std::ios::floatfield ); // floatfield not set
std::cout.precision(5);
std::cout << f << '\n';
std::cout.precision(10);
std::cout << f << '\n';
std::cout.setf( std::ios::fixed, std:: ios::floatfield ); // floatfield set to fixed
std::cout << f << '\n';
return 0;
}
输出:
3.1416 3.14159 3.1415900000
关于c++ - 在 C++ 错误中读取空格分隔值文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18121602/