用C++中的二维向量从txt文件中读入任意大小的矩阵



用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;
}
提问者评价
已经解决了 谢谢!