程序结构与C++的输入输出_第1页
程序结构与C++的输入输出_第2页
程序结构与C++的输入输出_第3页
程序结构与C++的输入输出_第4页
程序结构与C++的输入输出_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第12章章 程序结构与程序结构与C+的输入输出的输入输出 内容提要n本章主要介绍本章主要介绍C+多程序结构以及如何在多多程序结构以及如何在多程序结构环境下共享参数和函数。程序结构环境下共享参数和函数。n介绍介绍C+语言中流的概念以及语言中流的概念以及3种种C+基本流。基本流。n介绍介绍3中输出流控制方法和中输出流控制方法和4种输入流控制方法。种输入流控制方法。最好重点介绍如何使用最好重点介绍如何使用C+操作文件操作文件n介绍文本文件和二进制文件的读写以及如何随介绍文本文件和二进制文件的读写以及如何随机读写文件。机读写文件。 C+的程序结构 n所有的C+程序都是由一个或多个文件构成的。nC+编

2、译器和连接器把构成一个程序的若干源文件有机地联系在一起,最终产生可执行程序。外部存储类型 n一个程序在小规模情况下,可以用一个源文件来表示。n一般具有应用价值的程序由多个源文件组成。n根据C+程序的定义,其中只有一个源文件具有主函数main(),而其他的文件不能含有main()。使用外部存储类型文件使用外部存储类型文件案例名称:使用外部存储类型文件一案例名称:使用外部存储类型文件一程序名称:程序名称:proj12_01.cpp#includevoidfn1();voidfn2();intn;voidmain()n=3;fn1();/fn1()函数的定义在本文件中coutnendl;voidfn

3、1()fn2();/fn2()函数的定义不在本文件中使用外部存储类型文件二使用外部存储类型文件二案例名称:使用外部存储类型文件二案例名称:使用外部存储类型文件二程序名称:程序名称:proj12_01_1.cppexternintn;/n由另一个源文件定义voidfn2()/fn2()函数用于另一个源文件n=8;/使用n头文件 n一个程序经常由多个源文件组成,每个源文件是一个可编译的程序单位。一个源文件一般包含头文件(“.h”)和实现文件(“.cpp”),头文件一般可包含:n类型定义:如enum COLORn函数声明:如extern int fn()n内联函数定义:如inline char fn

4、(char p)n常量定义:如const float pi = 3.14n数据声明:如extern int m;n包含指令:如#include n宏定义:如#define 使用头文件使用头文件案例名称:使用头文件案例名称:使用头文件程序名称:程序名称:proj12_02.cpp#include#includemyarea.hvoidmain()doublewidth,length;width=10.0;length=15.0;coutareaofrectangleisrect(width,length)endl;doubleradius;radius=25;coutareaofcircleis

5、circle(radius)”和“”,为了使用基本I/O流类库提供的操作,必须在程序中包含头文件iostream。包括四种基本输入输出流:nlcin是istream类的对象,标准输入流,默认是键盘nlcout是ostream类的对象,标准输出流,默认是屏幕nlcerr是ostream类的对象,标准错误流(非缓冲),默认是屏幕nlclog是ostream类的对象,标准错误流(缓冲),默认是屏幕基本流类库基本流类库案例名称:基本流类库案例名称:基本流类库程序名称:程序名称:proj12_03.cpp#includeusingnamespacestd;voidmain()cout标准输出endl;c

6、err标准错误流(非缓冲)endl;clog标准错误流(缓冲)endl;文件流类库文件流类库案例名称:文件流类库案例名称:文件流类库程序名称:程序名称:proj12_04.cpp#includeusingnamespacestd;voidfn()ofstreammyf(text.txt);myfHelloWorld!nHelloChina!nHelloBeijingn;voidmain()fn();字符串流类库 n类istringstream、类ostringstream和类stringstream分别继承于基本I/O流类库的类iostream、类ostream和类iostream。n其中,类

7、istringstream提供从字符串中读取数据的操作,类ostringstream提供将数据写入字符串的操作,类stringstream同时提供字符串的读取和写入操作。 字符串流类库字符串流类库案例名称:字符串流类库案例名称:字符串流类库程序名称:程序名称:proj12_05.cpp#include#includeusingnamespacestd;voidmain()ostringstreambuffer;bufferabcendl;bufferabc;coutbuffer.str()endl;三种输出操作 n输出操作包括三种:n运算符、成员函数put()和成员函数write()。运算符

8、案例名称:使用运算符案例名称:使用运算符程序名称:程序名称:proj12_06.cpp#includeusingnamespacestd;voidmain()char*str=char*;coutstrendl;inti=123;coutiendl;成员函数put() 案例名称:使用成员函数案例名称:使用成员函数put()程序名称:程序名称:proj12_07.cpp#includeusingnamespacestd;voidmain()cout.put(M);cout.put(n);cout.put(G).put(o).put(o).put(d);cout.put(n);charstr10=

9、Hello;cout.put(str0);cout.put(n);成员函数write() 案例名称:使用成员函数案例名称:使用成员函数write()程序名称:程序名称:proj12_08.cpp#include#includeusingnamespacestd;voidmain()char*str=HelloWorldn;cout.write(str,strlen(str);cout.write(HelloWorld,6);cout.write(n,1);四种输入操作 n四种输入操作分别为:n运算符、成员函数get()、成员函数getline()和成员函数read()。 运算符 案例名称:使用

10、运算符案例名称:使用运算符程序名称:程序名称:proj12_09.cpp#includeusingnamespacestd;voidmain()inta;couta;cout您输入的整数是:aendl;coutxyz;cout您输入的三个整数是:xyzendl;成员函数get() n当读取一个字符串的时候,在参数的控制下读入若干个字符,结束读入操作的条件有三种:n(1)参数length,表示读入字符的数量不得多于length-1个;n(2)参数delimiter,缺省值是换行符“n”,用于指定一个特定的字符,当遇到该字符时就停止读入操作。n(3)当遇到文件结束符EOF时。使用成员函数使用成员函

11、数get()案例名称:使用成员函数案例名称:使用成员函数get()程序名称:程序名称:proj12_10.cpp#includeusingnamespacestd;voidmain()charch;cout请输入一个字符endl;ch=cin.get();/格式一charc1,c2,c3;cout请输入三个字符endl;cin.get(c1).get(c2).get(c3);/格式二char*str=newchar;cout请输入100个字符,退出输入Xendl;cin.get(str,100,X);/格式三成员函数getline() n输入类istream的成员函数getline()的原型为

12、:nistream& getline(char *str, int length, char delimiter = n); n它和函数get()的功能基本相同,用于读取一串字符,直到读入字符的个数大于length-1,或者遇到文件的结束符EOF,或者遇到delimiter。但是,函数getline()要比函数get()好用得多,因为它能够自动丢弃delimiter,而不会将它留在istream中作为下一个输入的字符。成员函数read() 案例名称:使用成员函数案例名称:使用成员函数getline()和和read()程序名称:程序名称:proj12_11.cpp#includeusin

13、gnamespacestd;voidmain()char*str=newchar;cout请输入一行字符:endl;cin.getline(str,1000,n);char*ch=newchar;cout请输入8个字符:endl;cin.read(ch,8);文件的输入输出 n操作文件输入输出的库文件包括3个:nifstream、ofstream和fstream。文件的打开和关闭 打开方式说明ios:in打开文件进行读操作ios:out打开文件进行写操作ios:ate打开时文件指针定位到文件尾ios:app添加模式,所有增加都在文件尾部进行ios:trunc如果文件已存在则清空原文件ios:n

14、ocreate如果文件不存在则打开失败ios:noreplace如果文件存在则打开失败ios:binary二进制文件(非文本文件)文件的打开和关闭文件的打开和关闭案例名称:文件的打开和关闭案例名称:文件的打开和关闭程序名称:程序名称:proj12_12.cpp#include#includeusingnamespacestd;voidmain()ofstreamfout;fout.open(text.txt,ios:out|ios:trunc);foutIamastudent!endl;fout.close();文件的读写方法 n文件的读写方法分成两种:n(1)使用流运算符直接读写。文件的读/

15、写操作可以直接使用流的插入运算符“”,这些运算符将完成文件的字符转换工作。n(2)使用流成员函数。常用的输出流成员函数为:put函数、write函数;常用的输入流成员函数如下:get函数、getline函数和read函数。使用流运算符直接读写使用流运算符直接读写案例名称:使用流运算符直接读写案例名称:使用流运算符直接读写程序名称:程序名称:proj12_13.cpp#include#includeusingnamespacestd;voidmain()inti;charstring20;ofstreammyfout(keyword.txt,ios:out);for(i=0;istring;my

16、foutstringendl;myfout.close();使用流成员函数使用流成员函数案例名称:使用流成员函数案例名称:使用流成员函数程序名称:程序名称:proj12_14.cpp#include#includeusingnamespacestd;voidmain()ofstreammyfout;charx;myfout.open(keyword.txt,ios:out);cin.get(x);for(;x!=#;)myfout.put(x);cin.get(x);myfout.close();文本文件的读写案例名称:文本文件的读写案例名称:文本文件的读写程序名称:程序名称:proj12_1

17、5.cpp#include#include#includeusingnamespacestd;stringreadFile()ostringstreambuffer;ifstreamfile(text.txt);charch;if(!file)cerr文件打开失败!endl;exit(-1);while(file.get(ch)buffer.put(ch);file.close();returnbuffer.str();voidmain()cout文件的内容为:endlreadFile()endl;二进制文件的读写 n二进制文件不同于文本文件,它可用于任何类型的文件(包括文本文件),读写二进制

18、文件的字符不作任何转换,读写的字符与文件之间是完全一致的。n一般地,对二进制文件的读写可采用两种方法:一种是使用get()和put();另一种是使用read()和write()。 二进制文件的读写二进制文件的读写案例名称:二进制文件的读写案例名称:二进制文件的读写程序名称:程序名称:proj12_16.cpp#include#include#includeusingnamespacestd;voidcopyFile()ostringstreambuffer;ifstreamsorcefile;ofstreamtargetfile;sorcefile.open(myimage.jpg,ios:i

19、n|ios:binary);targetfile.open(myimagebak.jpg,ios:out|ios:binary);charch;if(!sorcefile)cerr原文件不存在!endl;exit(-1);while(sorcefile.get(ch)targetfile.put(ch);sorcefile.close();targetfile.close();voidmain()cout拷贝文件!endl;copyFile();文件的随机读写 案例名称:文件的随机读写案例名称:文件的随机读写程序名称:程序名称:proj12_17.cpp#include#include#inc

20、ludeusingnamespacestd;voidmain()intj;fstreamfile(hello.txt,ios:in|ios:out|ios:app|ios:binary);if(!file)cerr文件打开失败endl;exit(-1);for(inti=0;i20;i+)j=i*2;/数据写入file.write(char*)&j,sizeof(int);file.close();file.open(hello.txt,ios:in|ios:binary);while(file.read(char*)&i,sizeof(int)couti;file.clear

21、();file.seekg(0);file.seekg(48);file.read(char*)&i,sizeof(int);coutendl第13个数是iendl;file.close();小结n本章需要熟练使用本章需要熟练使用C+语言的多程序结构,熟悉程序语言的多程序结构,熟悉程序间共享变量和函数的方法。间共享变量和函数的方法。n掌握掌握C+语言语言3种基本流:基本流类库、文件流类库种基本流:基本流类库、文件流类库和字符串流类库。和字符串流类库。n熟练使用熟练使用3种输出操作:种输出操作:运算符、运算符、函数函数get()、函数函数getline()和函数和函数read()。n掌握文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论