急求答案:C++读取文本,赋值给一个数组时。。。。

data.txt:
1 2 3
4 5 6
7 8 9
//read_data.cpp
#include<fstream>
#include<iostream>
using namespace::std;

int main(){
int a,b;//数组大小
cin>>a>>b;
int** m = new int*[a];
for(int i = 0;i < a;++i){
*m = new int[b];
}

ifstream in("data.txt");

for(int i = 0;i < a;++i){
for(int j = 0;j < b;++j){
in>>m[i][j];
}
}
system("pause");
return 0;
}
这其中有一行是in>>m[i][j].我不清楚他是咋赋值的,怎么将文本中的数据拷贝过来的,就是说第一行的1,2,3分别是赋值给了二维数组中的哪一个。。。

这个数组定义大小是根据输入的a,b的值来确定其维数的,
即数组就是m[a][b]。
而赋值是用双层for循环,从文本输入,其中内层for先将m[0][j],(j值从0到b-1)
外层则是一个大的循环控制m[i][j],内层循环一次后外层i+1。直到循环结束。
也就是说,赋值得看输入的a,b值的大小了。如果a=1,b = 9.就相当于一维数组了。
a = 2, b = 5.则m[0]中依次是12345,m[1]中依次是6789
如果a = 3,b = 3就按文本中的形式存储m[0] 依次是 123,m[1]依次456,m[2]依次是789
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-27
稍微修改了下,你的程序。这样也许能更好看些。
赋值就是你说的那句 in>>m[i][j]。
in是一个输入流,它打开的就是那个data.txt 文本。
因为m[i][j]是int 型的,所以它每次读取一个数,放到数据M中了
我的输入是:
1 9
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
请按任意键继续. . .

//read_data.cpp
#include<fstream>
#include<iostream>
using namespace::std;

int main()
{
int a,b;//数组大小
cin>>a>>b;
int** m = new int*[a];
for(int i = 0;i < a;++i)
{
*m = new int[b];
}

for( i = 0;i < a;++i)
{
for(int j = 0;j < b;++j)
{
cout << m[i][j] <<endl;
}
}

ifstream in("data.txt");

for( i = 0;i < a;++i)
{
for(int j = 0;j < b;++j)
{
in >> m[i][j];
cout << m[i][j] <<endl;
}
}
for( i = 0;i < a;++i)
{
for(int j = 0;j < b;++j)
{
cout << m[i][j] <<endl;

}
}
system("pause");
return 0;
}
第2个回答  2010-08-27
1给了m[0][0]
2给了m[0][1]
3给了m[0][2]

in是重载的文件写入流...
就跟cin的读法一样
主要就是循环的顺序了...
第3个回答  2017-12-07
in>>m[i][j];
m[i][j]是int,就是在data.txt读取一个int到m[i][j]而已啊。
相似回答