使用c ++从txt加载float / double矩阵

时间:2011-12-20 02:38:41

标签: c++ file-io matrix floating-point

看起来相当愚蠢,但我很难加载一个矩阵类型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文件中。

我使用了fscanfifstream以及我发现并熟悉的各种事情,但我无法加载它。我在相关问题上找到了,但程序没有帮助我。

我需要将这些值保存到float数组中,但是现在我只想能够正确加载它们,所有值看起来都像我写的那样。

请帮忙吗?任何人?

相关问题:Reading a .txt text file in C containing float, separated by space

1 个答案:

答案 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
    }
}

如果您的矩阵数据分布在多行上,请相应地修改代码。