




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
。c+学习笔记c+对txt文件的读取与写入标签:c+IO2015-01-13 17:431880人阅读评论(0)收藏举报分类:c/c+编程(8)版权声明:本文为博主原创文章,未经博主允许不得转载。一、文件的输入输出头文件fstream定义了三个类型支持文件IO:ifstream从给定文件读取数据、ofstream向一个给定文件写入数据、fstream读写给定数据。这些类型与cin和cout的操作一样,我们可以用IO操作符来读写文件,还可以用getline从一个ifstream读取数据。1、getline()函数getline的函数原型为:cppview plaincopy1. istream&getline(istream&is,string&str,chardelim);2. istream&getline(istream&is,string&str,chardelim);3. istream&getline(istream&is,string&str);4. istream&getline(istream&is,string&str);通常我们使用getline函数读取一整行,该函数接受一个输入流和一个string对象,函数从给定的输入流中读取内容,直到遇到换行符为止,然后将所读的内容存入到个string对象中。另外,当函数为istream& getline (istream& is, string& str, char delim);形式时,函数遇到delim也会停止。2、使用文件流对象当我们想要读入一个文件时,可以定义一个文件流对象,并将对象与文件相关联起来,每一个文件流类都定义了一个名为open的成员函数,完成一系列系统相关的操作。open函数的原型为:cppview plaincopy1. voidopen(constchar*filename,ios_base:openmodemode=ios_base:out);2. voidopen(conststring&filename,ios_base:openmodemode=ios_base:out);文件模式(mode)有一下几种:cppview plaincopy1. ofstreamoutfile(E:out.txt,ofstream:app);上述代码打开out.txt文件,如果不存在,系统会创建此txt文件,并且定位到文件末尾。打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作。例:从hello.txt文件中读取数据并写入到out.txt中cppview plaincopy1. #includestdafx.h2. #include3. #include4. #include5. #include6. usingnamespacestd;7. int_tmain(intargc,_TCHAR*argv)8. 9. ifstreammyfile(E:hello.txt);10. ofstreamoutfile(E:out.txt,ofstream:app);11. stringtemp;12. if(!myfile.is_open()13. 14. cout未成功打开文件endl;15. 16. while(getline(myfile,temp)17. 18. outfiletemp;19. 20. myfile.close();21. return0;22. 二、string流string头文件定义了三个类型来支持内存IO,istringstream向string写入数据,ostringstream从string读取数据,stringstream既可从string读取数据也可向string写数据,就像string是一个IO流一样。1、istringstream的用法cppview plaincopy1. #includestdafx.h2. #include3. #include/使用istringstream所需要的头文件4. #include5. usingnamespacestd;6. int_tmain(intargc,_TCHAR*argv)7. 8. stringstr=Iamaboy;9. istringstreamis(str);10. strings;11. while(iss)12. 13. coutsendl;14. 15. return0;16. 输出结果为:Iamaboy例:编写程序,将来自一个文件中的行保存在一个vector中,然后使用istringstream从vector读取数据元素,每次读取一个单词。cppview plaincopy1. #includestdafx.h2. #include3. #include4. #include5. #include6. #include7. usingnamespacestd;8. int_tmain(intargc,_TCHAR*argv)9. 10. vectorvec;11. ifstreammyfile(E:hello.txt);12. stringtemp;13. if(!myfile.is_open()14. 15. cout未成功打开文件endl;16. 17. while(getline(myfile,temp)18. 19. vec.push_back(temp);20. 21. for(autoit=vec.begin();it!=vec.end();it+)22. 23. cout*itendl;24. 25. cout-使用istringstream-s)32. coutsendl;33. 34. return0;35. 运行结果如图所示:/下述论述转自,程序作者:管宁cppview plaincopy1. include2. include3. usingnamespacestd;4. intmain()5. 6. istringstreamistr;7. istr.str(156.7,);8. /上述两个过程可以简单写成istringstreamistr(156.7);9. coutistr.str()a;13. coutab;15. coutbendl;16. system(pause);17. 上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入赋值操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。str()成员函数的使用可以让istringstream对象返回一个string字符串(例如本例中的输出操作(coutistr.str();)。2、ostringstream的用法ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。ostringstream的构造函数原形如下:cppview plaincopy1. ostringstream:ostringstream(stringstr);/下述论述转自,程序作者:管宁cppview plaincopy1. include2. include3. include4. usingnamespacestd;5. intmain()6. 7. ostringstreamostr;8. /ostr.str(abc);/如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长9. ostr.put(d);10. ostr.put(e);11. ostrfg;12. 13. stringgstr=ostr.str();14. coutgstr;15. system(pause);16. 在上例代码中,我们通过put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据,但值 得注意的一点是,当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。c+逐行读取写入txt文件的方法2012-11-23 17:1728404人阅读评论(1)收藏举报分类:c+技术文章(14)版权声明:本文为博主原创文章,未经博主允许不得转载。/*该程序从文件main.txt文件中着行读取字符存放在s中并打印s*/#include#include#includeusing namespace std;void main()ifstream in(main.txt);string s;while(getline(in,s)/着行读取数据并存于s中,直至数据全部读取couts.c_str()endl;fstream提供了三个类,用来实现c+对文件的操作。(文件的创建、读、写)。ifstream - 从已有的文件读ofstream- 向文件写内容fstream- 打开文件供读写文件打开模式:iOS:in读ios:out写ios:app从文件末尾开始写ios:binary二进制模式ios:nocreate打开一个文件时,如果文件不存在,不创建文件。ios:noreplace打开一个文件时,如果文件不存在,创建该文件ios:trunc打开一个文件,然后清空内容ios:ate打开一个文件时,将位置移动到文件尾文件指针位置在c+中的用法:ios:beg文件头ios:end文件尾ios:cur当前位置例子:file.seekg(0,ios:beg);/让文件指针定位到文件开头file.seekg(0,ios:end);/让文件指针定位到文件末尾file.seekg(10,ios:cur);/让文件指针从当前位置向文件末方向移动10个字节file.seekg(-10,ios:cur);/让文件指针从当前位置向文件开始方向移动10个字节file.seekg(10,ios:beg);/让文件指针定位到离文件开头10个字节的位置常用的错误判断方法:good()如果文件打开成功bad()打开文件时发生错误eof() 到达文件尾实例:一、写入文件#include #include using namespace std;void main()ofstream in;in.open(com.txt,ios:trunc); /ios:trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建int i;char a=a;for(i=1;i=26;i+)/将26个数字及英文字母写入文件if(i10)in0itan;a+;elseinitan;a+;in.close();/关闭文件打开com.txt,效果如下:二、读取文件上面仅仅是将文本写入文件,并没有读取出来。以下为读取文件的一种方法:将文件每行内容存储到字符串中,再输出字符串#include #include using namespace std;void main()char buffer256;fstream out;out.open(com.txt,ios:in);cout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届青海师大二附中高二物理第二学期期末质量跟踪监视模拟试题含解析
- 2025届甘肃省庆阳市第二中学高一物理第二学期期末质量检测试题含解析
- 郑州第一中学2025届物理高一第二学期期末监测模拟试题含解析
- 2025版电子产品销售代理及售后服务合作协议
- 二零二五年度消防设施智能化改造与升级服务合同
- 2025版建筑材料运输合同规范文本
- 2025版城市排水系统安装人工劳务合同模板
- 二零二五年度智能电网建设与维护服务合同
- 二零二五年度企业财务预算编制咨询服务合同范本
- 2025版车辆保险居间代理合同(含意外伤害保障)
- 基础会计-中职课件
- 平安建设评估方案(3篇)
- 集团知识产权管理办法
- 华为品牌宣传管理办法
- 灭鼠灭蟑螂培训课件
- 16J914-1 公用建筑卫生间
- 小学生防性侵安全知识讲座
- GB/T 3211-2023金属铬
- 芯烨xp q200驱动及使用说明机功能设置
- 华为公司渠道政策
- 人教版三年级上册数学(全册)同步练习题及答案-人教三年级数学全册练习题及答案
评论
0/150
提交评论