看起来相当愚蠢,但我很难加载一个矩阵类型double
我在txt文件上。在里面签了double
之类的东西,比如
11707.2 -919.303 -322.04 2260.71 2443.85 -4629.31 3082.64 -4209.86
-1741.71 298.192 -5658.34 2377.03 -3039 -2049.99 2788 -1915.9
依此类推,我把它放在一个txt文件中。
我使用了fscanf
,ifstream
以及我发现并熟悉的各种事情,但我无法加载它。我在相关问题上找到了,但程序没有帮助我。
我需要将这些值保存到float数组中,但是现在我只想能够正确加载它们,所有值看起来都像我写的那样。
请帮忙吗?任何人?相关问题:Reading a .txt text file in C containing float, separated by space
答案 0 :(得分:3)
标准习语:
#include <fstream> // for std::ifstream
#include <sstream> // for std::istringstream
#include <string> // for std::string and std::getline
int main()
{
std::ifstream infile("thefile.txt");
std::string line;
while (std::getline(infile, line))
{
// process line, e.g. one matrix per line:
std::istringstream iss(line);
std::vector<double> m;
m.reserve(16);
double d;
if (iss >> d) { m.push_back(d); }
else { /* error processing this line */ }
if (m.size() != 16) { /* error */ }
// use m
}
}
如果您的矩阵数据分布在多行上,请相应地修改代码。