请教c++中,如何读取一个txt文本文件中的数字,并存到数组当中

Sunflower401 2014-01-11 08:17:16
请教各位,假如一个文本文档中有一个矩阵
想编一个程序读取这个文本文档中的数字并储存到一个一维数组中。在编写的过程中遇见这样的问题:1.文本文档中的每一行结尾都有一个回车键和一个换行符,这两个字符也会读取到数组中。2.由于文本文档中的数组好像是以ASCII码存储的,所以数组中存储的是一个个的字符型的数,比如68,会分别存到数组的两个单元中,一个是6,一个是8。而我希望得到的结果是一个int型或者double型的数组,里面存储的是文本文档中的矩阵。
刚刚开始学习c++,很多不懂的,谢谢各位了!
...全文
23371 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-01-14
  • 打赏
  • 举报
回复
文件流,getline函数可以吧
赵4老师 2014-01-13
  • 打赏
  • 举报
回复
lin5161678 2014-01-13
  • 打赏
  • 举报
回复
fscanf %d 完事
vipcxj 2014-01-11
  • 打赏
  • 举报
回复
引用 9 楼 sly923113560 的回复:
也谢谢其他几位,主要是我没听明白,自己基础太差了!

using namespace std;
ifstream fin("data.txt");
vector<int> vec;
copy(istream_iterator<int>(fin), istream_iterator<int>(), back_insert_iterator<vector<int> >(vec));
还有更简单的~
Sunflower401 2014-01-11
  • 打赏
  • 举报
回复
也谢谢其他几位,主要是我没听明白,自己基础太差了!
Sunflower401 2014-01-11
  • 打赏
  • 举报
回复
引用 5 楼 vipcxj 的回复:

ifstream fin("data.txt");
vector<int> vec;
while (fin)
{
   int idata;
   fin >> idata;
   vec.pushback(idata);
}
很难吗?
谢谢您,是我太菜了,以前也没用过vector。这个对我很有用!
未注销 2014-01-11
  • 打赏
  • 举报
回复
int main()
{
	int a[16] = {0};
	FILE* fp = fopen("aa.txt", "r");
	int i = 0;
	while (!feof(fp))
	{
		fscanf(fp, "%d", &a[i]);
		i++;
	}
	return 0;
}
cheney1227 2014-01-11
  • 打赏
  • 举报
回复
用文件输入输出流对象fstream
vipcxj 2014-01-11
  • 打赏
  • 举报
回复

ifstream fin("data.txt");
vector<int> vec;
while (fin)
{
   int idata;
   fin >> idata;
   vec.pushback(idata);
}
很难吗?
Sunflower401 2014-01-11
  • 打赏
  • 举报
回复
引用 3 楼 derekrose 的回复:
引用 2 楼 sly923113560 的回复:
[quote=引用 1 楼 derekrose 的回复:] 问题太多 说具体一点 简要一点
就是想问,上面那个图中的矩阵,怎么存储到一个一维数组中?
。。。一维数组是线性存储的 你只需要填数据就可以了[/quote]抱歉我太菜了,麻烦您再说详细点,怎么填数据,这是我的代码,您能帮我看下么
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <stdlib.h>
#include < sys\stat.h>
using std::ios;
using std::string; 
using namespace std;

int main()
{
	size_t txtlen;
	char ch=0;
	char* t;
	struct _stat info; 
	int a=0;
	std::ifstream text("123.txt", std::ios::in);
	_stat("123.txt", &info);  
	txtlen = info.st_size;
	t=( char *)malloc(txtlen*sizeof(char));
	if(!t)
		{
			printf("创建动态数组失败!\n");
			exit(-1);
		}
	while(!text.eof() && a<txtlen)
	{
		text.get(ch);
		if((ch!=' ')&&(ch!=10)&&(ch!=13))
		{
			t[a]=ch;
			a++;
		}
	}
	text.close();
	for(int i=0;i<a;i++)
		cout<<t[i]<<" ";
    return 0;
}
derekrose 2014-01-11
  • 打赏
  • 举报
回复
引用 2 楼 sly923113560 的回复:
引用 1 楼 derekrose 的回复:
问题太多 说具体一点 简要一点
就是想问,上面那个图中的矩阵,怎么存储到一个一维数组中?
。。。一维数组是线性存储的 你只需要填数据就可以了
Sunflower401 2014-01-11
  • 打赏
  • 举报
回复
引用 1 楼 derekrose 的回复:
问题太多 说具体一点 简要一点
就是想问,上面那个图中的矩阵,怎么存储到一个一维数组中?
derekrose 2014-01-11
  • 打赏
  • 举报
回复
问题太多 说具体一点 简要一点

64,637

社区成员

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

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