用C++中的二维向量从txt文件中读入任意大小的矩阵
读取一个txt文件,形式类似如下: 1111111111 0110001111 0010101101 1010101000 由于矩阵大小不固定所以我打算用向量做: typedef vector<vector<int> > Mat; Mat input() { ifstream in("D:\\aaa.txt"); Mat a; for(string s;getline(in,s);) { vector<int> b;//下面就不会编了,问题是如何从s中一个一个的取字符然后调用push_back for(int i;i<=s.length();i++) {//这边都不对,脑袋完全乱掉了 。 。 。 。 b.push_back(i); } a.push_back(b); } return a; } 最后输出是这样: void print(Mat& a) { for(int i=0;i<a.size();++i) { for(int j=0;j<a[i].size();++j) cout<<a[i][j]<<" "; cout<<endl; } }
算了,把问题放简单点: txt文件中矩阵大小m×n固定,如4×5: 10110 10110 12021 24021 用二维数组a[m][n]读入,该怎么编写?编出来再追加分数~!
2008-12-20 22:21
提问者采纳
我写给你! linux G++s测试输出正常 #include <iostream> #include <sstream> #include <vector> #include <string> #include <fstream> using namespace std; typedef vector<vector<int> > Mat; Mat input(); int main (void) { Mat a = input(); for (int i = 0; i < a.size();i++) { for(int j = 0; j < a[i].size();j++) { cout<<a[i][j]<<" "<<flush; } cout<<endl; } return 0; } Mat input() { ifstream in("int.txt"); Mat a; istringstream istr; string str; vector<int> tmpvec; while(getline(in,str)) { istr.str(str); int tmp; while(istr>>tmp) { tmpvec.push_back(tmp); } a.push_back(tmpvec); tmpvec.clear(); istr.clear(); } return a; }
- 提问者评价
-
已经解决了 谢谢!