C++外部文件读取相关操作
来源:互联网 发布:.杀破狼 - js 编辑:程序博客网 时间:2024/06/05 17:33
今天我们首先要解决的问题是使用C++进行外部文件夹的读取。
我们在实现这些算法的过程中,用到的图的存储结构(目前)只是涉及到两种 邻接链表存储结构和邻接矩阵存储结构。其中用到较多的还是邻接链表的形式。
在我们进行图的各种操作之前,我们必须先要创建一个图。因为后期我们小组要对每个人实现的算法进行比较,我们决定使用统一的图(具有相同的结点个数和相同的边),因此引出了我遇到的第一个问题:如何将txt文件里面的数据读取出来。
首先我们先来分析txt文档里面存储的数据结构:
6506 0 10 340 678...
txt文档的第一行数字为图中结点的个数,此后每一行体表一条边,第一个int数字为边的起点,后一个数字为边的终点。我们可以发现,数据的存储结构相对于之前写IL算法时的数据集结构要简单的多,所以相应的操作也就少了,拿uniprot150m.txt数据集来说整个文件有293MB的大小,我们使用getline()方法就可以完成,时间消耗个人感觉比较多,读入文件且创建图的部分代码如下:
void Graph::creat_Linklist_Direction(){ifstream read("E:/uniprot150m.txt");string tem;getline(read,tem);istringstream iss(tem);//利用istream 读取string类型并转为intiss >> vex_num;cout<<"结点的个数:"<<vex_num<<endl;createVertexArry();int start,end;int weight=0;while(!read.eof()){ getline(read,tem); if (tem=="#") { continue; } if (tem!="") {//对读入每行的内容进行分割 int pos=tem.find(" ",0); istringstream st(tem.substr(0,pos)); st>>start; //cout<<start<<endl; istringstream stt(tem.substr(pos,tem.length())); stt>>end; //cout<<end<<endl; addedge_direction(start,end,weight);//调用外部函数完成添边的操作 }}read.close();cout<<"有向图链表存储完成!"<<endl;}
以上代码就可以完成我们读取txt文件并且创建一个图的过程,当然这种读取的方法是要慢一点,还有一种是利用fscanf()函数来完成的,时间相对直接使用getline()方法有部分提高,后来又发现另一种方法,还是直接上代码来理解,如下:
ifstream re;int tem;re.open("E:\\Share\\Sort_data\\1.txt");if (re.bad()){ cout<<"can not open the file!"<<endl;}while(!re.eof()){ re>>tem;//取出的直接就是int类型的;//也可以用 re>>tem1>>tem2,可以将一行的两个元素读取 cout<<tem<<endl;//真正用的时候我们直接换成创建数组的过程;}re.close();
目前为止一直使用这种方法读取,简单易操作,而且速度也不慢,暂时没有发现更好的读取方法,现将代码链接粘上点击下载
0 0
- C++外部文件读取相关操作
- C#: 文件读取操作
- matlab文件读取相关操作
- 文件相关操作[C#]
- C文件相关操作
- C文件操作;数据文件读取
- Qt与文件读取操作相关。
- C语言文件相关操作
- C语言 文件操作相关
- linux C文件操作相关
- linux c 文件操作相关
- C语言文件相关操作
- c/c++ 文件相关操作
- C语言文件相关操作
- sql语句放到外部xml文件里,读取操作
- 外部文件读取
- c库文件读取操作不正常
- linux c 文件读取操作一
- android异常收集-关于fragment导入包出错的问题
- 基本图算法之图的搜索
- 略说http协议(一:http历史及http基础)
- linux系统编程
- TCP/IP三次握手与四次挥手过程状态详解
- C++外部文件读取相关操作
- 小议浮动
- 博客开通
- python装饰器
- android连接天天模拟器方法
- 排名Top 16的Java实用类库
- 最小生成树
- Myeclipse修改项目名称,而发布到Tomcat上的项目名称却未修改。
- 《React-Native系列》6、Navigator语法介绍及经典应用