2012-05-03 46 views
0

我有一些.txt文件看起来是这样的:阅读文本文件的矩阵,然后乘以他们

1050.00 68.13 

1048.00 67.89 

1046.00 67.62 

1044.00 67.30 

1042.00 66.91 

[ ... ] 

我想乘这另一个矩阵。

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

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

+0

欢迎来到Stack Overflow!您如何读取数据取决于您想如何在程序中表示数据。你为Matrix选择了一个数据结构吗? –

+0

我想把它与另一个.txt文件相乘,看起来也是这样。并且结果必须是不可或缺的。 它会来的数字。有了这个数字,我可以定义哪种颜色(与RGB或类似的东西) – Huong

回答

0

什么是“矩阵”?

如果您有某种“矩阵库”,只需使用其功能。

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

希望这会有所帮助。

+0

请注意,问题是标记为C++。如果OP避免类型不安全的'fgets'和'sscanf'函数可能是最好的。首选'std :: getline'和'operator >>'。 –

3

我的数据存储在vector<vector<double>>,我会用std::getline,std::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); 
}