求助:用C++从txt读取数据存入数组

崩溃的jacinda 2013-05-06 08:19:15

如上图所示txt文档有27行30列数据,想从该txt中读取数据后存入一个27*30的数组size中。应该如何写C++的代码呢?
新学C++,有很多问题,多谢帮忙!
...全文
17231 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangsanfeng120 2015-12-30
  • 打赏
  • 举报
回复
[quote=引用 4 楼 hugett 的回复:]

#include <iostream>
#include <fstream>

using namespace std;

const int ROW = 27;
const int VOL = 30;

int main(){
	double d[ROW][VOL];
	ifstream in("D:\\data.txt");//打开文件
	//读数据。。
	for(int i = 0; i < ROW; ++i){
		for(int j = 0; j < VOL; ++j){
			in >> d[i][j];
		}
	}
	in.close();//关闭文件
	//输出结果
	for(int i = 0; i < ROW; ++i){
		for(int j = 0; j < VOL; ++j){
			cout<<d[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
[/quo 请问如果我的行数列数不确定怎么办
我看你有戏 2013-06-09
  • 打赏
  • 举报
回复
给个思路,这些字符,之间是否是跳格分隔开的啊 如果是这样就很简单了啊 一次全部读取,拆分字符串,拆分2次 第一次是根据\n把字符串拆分若干个数组 第二次,将第一个所得的数组元素根据\t进行拆分 这样你将得到一个二维数组,基本思路是如此,而且通用的
kobekiln 2013-06-09
  • 打赏
  • 举报
回复
引用 4 楼 hugett 的回复:

#include <iostream>
#include <fstream>

using namespace std;

const int ROW = 27;
const int VOL = 30;

int main(){
	double d[ROW][VOL];
	ifstream in("D:\\data.txt");//打开文件
	//读数据。。
	for(int i = 0; i < ROW; ++i){
		for(int j = 0; j < VOL; ++j){
			in >> d[i][j];
		}
	}
	in.close();//关闭文件
	//输出结果
	for(int i = 0; i < ROW; ++i){
		for(int j = 0; j < VOL; ++j){
			cout<<d[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
您好,您这行代码可以实现读取txt至二维数组嘛?看起来非常简单有效的样子。抱歉,由于手头没有vs,所以无法自己亲身试验了。
Scorpiour 2013-05-06
  • 打赏
  • 举报
回复
引用 2 楼 jasmineliuying 的回复:
谢谢你的回复! 刚刚试了下程序,发现运行后程序一直不能结束运行,但又看不出来哪里有问题。 另外可以告诉我这部分的含义吗?不知道我自己理解的对不对。谢谢! while(!infile.eof()) (.eof()用来判断输入是否成功) { infile>>*ptr; (这个是把文档里面的数对应在ptr位置的数值上) ptr++; }
是这样的另外用eof是我偷懒了对于>>运算符输入还是老老实实拿counter来控制循环比较好 [code=c/c++] int counter=810; while(counter) { infile>>tmp; v.push_back(tmp); counter--; } for(unsigned int i=0;i<v.size();i++) { cout<<v[i]<<'\t'; }//检查输入数据情况 [/code]
hugett 2013-05-06
  • 打赏
  • 举报
回复

#include <iostream>
#include <fstream>

using namespace std;

const int ROW = 27;
const int VOL = 30;

int main(){
	double d[ROW][VOL];
	ifstream in("D:\\data.txt");//打开文件
	//读数据。。
	for(int i = 0; i < ROW; ++i){
		for(int j = 0; j < VOL; ++j){
			in >> d[i][j];
		}
	}
	in.close();//关闭文件
	//输出结果
	for(int i = 0; i < ROW; ++i){
		for(int j = 0; j < VOL; ++j){
			cout<<d[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
大神送一血 2013-05-06
  • 打赏
  • 举报
回复
引用 2 楼 jasmineliuying 的回复:
谢谢你的回复! 刚刚试了下程序,发现运行后程序一直不能结束运行,但又看不出来哪里有问题。 另外可以告诉我这部分的含义吗?不知道我自己理解的对不对。谢谢! while(!infile.eof()) (.eof()用来判断输入是否成功) { infile>>*ptr; (这个是把文档里面的数对应在ptr位置的数值上) ptr++; }
eof返回true表示文件结束了。
崩溃的jacinda 2013-05-06
  • 打赏
  • 举报
回复
谢谢你的回复! 刚刚试了下程序,发现运行后程序一直不能结束运行,但又看不出来哪里有问题。 另外可以告诉我这部分的含义吗?不知道我自己理解的对不对。谢谢! while(!infile.eof()) (.eof()用来判断输入是否成功) { infile>>*ptr; (这个是把文档里面的数对应在ptr位置的数值上) ptr++; }
Scorpiour 2013-05-06
  • 打赏
  • 举报
回复
[code=c/c++] #include <iostream> #include <fstream> using namespace std; int main() { double array[27][30]={0.0}; ifstream infile; infile.open("data.txt"); double* ptr = &array[0][0]; while(!infile.eof()) { infile>>*ptr; ptr++; } infile.close(); return 0; }[/code] [code=c/c++] #include <iostream> #include <fstream> #include <vector> using namespace std; int main() { vector<double> v; ifstream infile; infile.open("data.txt"); double tmp; while(!infile.eof()) { infile>>tmp; v.push_back(tmp); } infile.close(); return 0; }[/code]

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧