将文本文件读取到矩阵,然后将它们相乘

时间:2012-05-03 15:00:28

标签: c++ file-io matrix

我有一些.txt文件如下所示:

1050.00 68.13

1048.00 67.89

1046.00 67.62

1044.00 67.30

1042.00 66.91

[ ... ]

我想将其乘以另一个矩阵。

我的问题是我不知道如何在矩阵中读取和存储这些数据。

有人有任何想法可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

我会将数据存储在vector<vector<double>>中,然后我会使用std::getlinestd::istringstreamoperator>>来阅读。

#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <iterator>
#include <algorithm>
struct Matrix {
  std::vector<std::vector<double> > data;
  Matrix(const std::string& filename) {
    std::ifstream inFile(filename.c_str());
    std::string inLine;
    while(std::getline(inFile, inLine)) {
      std::istringstream inLineStream(inLine);
      std::vector<double> inLineData(
        (std::istream_iterator<double>(inLineStream)),
        std::istream_iterator<double>());
      data.push_back(inLineData);
    }
  }
  Matrix operator*(const Matrix& rhs) { ... };
};

int main () {
  Matrix a("a.txt");
  Matrix b("b.txt");
  Matrix c(a * b);
}

答案 1 :(得分:0)

什么是“矩阵”?

如果你有某种“矩阵库”,只需使用它的功能。

如果您自己实现矩阵,请逐行读取文本文件(fgets())并使用sscanf()读取项目。

希望这有帮助。

答案 2 :(得分:0)

您可以这样阅读:

char *fname = "matrix.txt";
ifstream infile(fname);

float f;
while (infile >> f) {
   //store f to matrix
}

网上有很多maxtrix类实现示例,有一个:http://www.codeproject.com/Articles/3613/A-generic-reusable-and-extendable-matrix-class