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