gpt4 book ai didi

c++ - 在 C++ 错误中读取空格分隔值文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:24 25 4
gpt4 key购买 nike

我正在尝试从文件中获取浮点值以在我的程序中使用它们。我使用以下论坛构建程序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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com