9第九讲流类库与输入输出

上传人:s9****2 文档编号:580015742 上传时间:2024-08-28 格式:PPT 页数:49 大小:547KB
返回 下载 相关 举报
9第九讲流类库与输入输出_第1页
第1页 / 共49页
9第九讲流类库与输入输出_第2页
第2页 / 共49页
9第九讲流类库与输入输出_第3页
第3页 / 共49页
9第九讲流类库与输入输出_第4页
第4页 / 共49页
9第九讲流类库与输入输出_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《9第九讲流类库与输入输出》由会员分享,可在线阅读,更多相关《9第九讲流类库与输入输出(49页珍藏版)》请在金锄头文库上搜索。

1、第十一章第十一章 流类库与输入流类库与输入/ /输出输出C+语言程序设计1本章主要内容本章主要内容lI/O流的概念流的概念l输出流输出流l输入流输入流2I/O流的概念流的概念l我要将一封信送给远在北京的朋友,只要将信我要将一封信送给远在北京的朋友,只要将信写好,封上,投入邮筒即可。于是信便开始了写好,封上,投入邮筒即可。于是信便开始了它的旅行:进入邮局、分拣、登上火车(或飞它的旅行:进入邮局、分拣、登上火车(或飞机)、再分拣、投递到收信人手中。这段过程机)、再分拣、投递到收信人手中。这段过程我是全然不知的,只是在信发出后几天,朋友我是全然不知的,只是在信发出后几天,朋友就收到了。就收到了。l如

2、果将数据比作信,邮政系统则是如果将数据比作信,邮政系统则是“流流”,程,程序对数据的序对数据的“收发收发”则是对流的则是对流的I/O操作。操作。3l当程序与外界环境进行信息交换时,要同时动当程序与外界环境进行信息交换时,要同时动用两个对象,一个是用两个对象,一个是程序中的对象程序中的对象,另一个是,另一个是文件对象文件对象。文件是物理概念,流是逻辑概念。文件是物理概念,流是逻辑概念。l流是文件的抽象,表示了数据的流淌。它负责流是文件的抽象,表示了数据的流淌。它负责在数据的在数据的生产者(源头)生产者(源头)和数据的和数据的消费者(目消费者(目的地)的地)之间建立联系,并管理数据的流动。之间建立

3、联系,并管理数据的流动。l生产者生产者和和消费者消费者可以是变量,常量、数组、对可以是变量,常量、数组、对象、引用、指针所指、还可以是键盘、显示器、象、引用、指针所指、还可以是键盘、显示器、文件等设备。文件等设备。4l程序建立程序建立流对象流对象,并指定这个,并指定这个流对象流对象与某与某文件对象文件对象建立连接。程序操作建立连接。程序操作流对象流对象,流对象流对象通过文件系统通过文件系统对所连接的对所连接的文件对象文件对象产生作用。产生作用。l读操作读操作在流数据抽象中被称为(从流中)在流数据抽象中被称为(从流中)提取提取,写写操作操作被称为(向流中)被称为(向流中)插入插入。l广义地,计算

4、机将输入输出设备都视为文件。广义地,计算机将输入输出设备都视为文件。l若将若将流对象流对象视为旅行社(提供旅游目的地和交通工视为旅行社(提供旅游目的地和交通工具),则具),则字节字节就是游客,就是游客,文件对象文件对象就是出发或目的就是出发或目的地,地,提取提取和和插入插入就是行驶方向,就是行驶方向,缓冲区缓冲区就是候车厅,就是候车厅,流流就是旅游线路。就是旅游线路。5l标准流标准流 是内存与标准外设(键盘、显示器)间的数据操作。是内存与标准外设(键盘、显示器)间的数据操作。 操作方式:文本字符,顺序操作方式:文本字符,顺序 头文件:头文件:iostream 缓冲类:缓冲类:stdiobufl

5、串流串流 是内存(数据区)与内存(模拟外设)间的数据操作。是内存(数据区)与内存(模拟外设)间的数据操作。 操作方式:文本字符,顺序操作方式:文本字符,顺序 头文件:头文件:sstream 缓冲类:缓冲类:strstreambufl文件流文件流 是内存与外存(磁盘)间的数据操作。是内存与外存(磁盘)间的数据操作。 操作方式:文本字符或二进制字节数据,顺序或随机操作方式:文本字符或二进制字节数据,顺序或随机 头文件:头文件:fstream 缓冲类:缓冲类:流的分类流的分类6输出流输出流l三个重要的输出流是:三个重要的输出流是:ostreamofstreamostringstreaml这是三个输出

6、流类。这是三个输出流类。7用流类用流类iostream替代替代stdiol用流类用流类iostream替代替代stdio的理由:的理由: stdio的函数类型不安全;的函数类型不安全; stdio的函数的不可扩充性;的函数的不可扩充性; (恰是这两点展示了恰是这两点展示了C+的绝活。)的绝活。)l次要的缺点是:将输入输出变量与控制输入输次要的缺点是:将输入输出变量与控制输入输出的格式分开书写的规矩。出的格式分开书写的规矩。8输出流对象输出流对象l系统定义的输出流对象系统定义的输出流对象:cout 标准输出,有缓冲。标准输出,有缓冲。cerr 标准错误输出,没有缓冲,发送给它的标准错误输出,没有

7、缓冲,发送给它的内容立即被输出,不可重定向到它处。内容立即被输出,不可重定向到它处。clog 类似于类似于cerr,但是有缓冲,缓冲区满时,但是有缓冲,缓冲区满时被输出。被输出。输出流9输出流对象输出流对象lofstream类支持磁盘文件输出类支持磁盘文件输出l如果在构造函数中指定一个文件名,当构造这个文件如果在构造函数中指定一个文件名,当构造这个文件时该文件是自动时该文件是自动打开打开的的ofstream myFile(,iosmode);l可以在调用默认构造函数之后使用可以在调用默认构造函数之后使用open成员函数打成员函数打开文件开文件ofstream myFile; /声明一个输出文件

8、流对象my(,iosmode); /打开文件,使流对象与文件建立联系ofstream* pmyFile = new ofstream; /建立一个输出文件流对象pmyFile-open(,iosmode); /打开文件,使流对象与文件建立联系输出流何谓打开文件?何谓打开文件?如何创建的?如何创建的?如何创建的?如何创建的?10插入运算符(插入运算符()l插入插入()运算符是输出流对象的成员函数,是运算符是输出流对象的成员函数,是针对所有针对所有C+基本数据类型基本数据类型预先设计的,它不预先设计的,它不支持用户自定义类型的对象。支持用户自定义类型的对象。l用于按字节传送给输出流对象。用于按字节

9、传送给输出流对象。输出流11重载插入运算符(重载插入运算符()插入插入()运算符是运算符是ostream流类的重载了的友元函数:流类的重载了的友元函数:ostream & operator )也类似,不另。也类似,不另。12控制输出格式控制输出格式l控制输出宽度控制输出宽度为了调整输出,可以通过在流中放入为了调整输出,可以通过在流中放入setw操纵符操纵符或或调用调用width成员函数为每个项指定输出宽度。成员函数为每个项指定输出宽度。l例例11-1 使用使用width控制输出宽度控制输出宽度#include using namespace std;void main() double val

10、ues = 1.23,35.36,653.7,4358.24; for(int i=0;i4;i+) cout.width(10); cout valuesi n; 输出流输出结果输出结果: 1.23 35.36 653.7 4358.24调用成员函数调用成员函数说出此句的语说出此句的语义及完成途径义及完成途径13例:使用例:使用*填充填充#include using namespace std; void main() double values=1.23,35.36,653.7,4358.24; for(int i=0; i4; i+) cout.width(10); cout.fill(

11、*); coutvaluesin; 输出流输出结果:输出结果:*1.23*35.36*653.7*4358.2414例例11-2使用使用setw指定宽度指定宽度#include #include using namespace std;void main() double values=1.23,35.36,653.7,4358.24; char *names=Zoot,Jimmy,Al,Stan; for(int i=0;i4;i+) coutsetw(6)namesi setw(10)valuesi endl; 输出流输出结果:输出结果: Zoot 1.23 Jimmy 35.36 Al

12、653.7 Stan 4358.24这不是调用成员函数这不是调用成员函数15关于关于“操纵符函数操纵符函数” 是定义在头文件是定义在头文件iomanip中的用于操控输入输出格式中的用于操控输入输出格式的一些函数。它们和流类的成员函数功能上很类似,但的一些函数。它们和流类的成员函数功能上很类似,但用法上不同。可分为无参和有参两大类:用法上不同。可分为无参和有参两大类: 无参操纵符函数无参操纵符函数: lock对文件句柄加锁对文件句柄加锁 , 相当于相当于%dunlock对文件句柄解锁对文件句柄解锁dec以十进制格式输入输出数据以十进制格式输入输出数据hex以十六进制格式输入输出数据以十六进制格式

13、输入输出数据 ,相当于相当于%Xoct以八进制格式输入输出数据以八进制格式输入输出数据 ,相当于相当于%ows输入时忽略打头的空白输入时忽略打头的空白endl加入一个换行符,并刷新输出流加入一个换行符,并刷新输出流 ends加入一个空字符加入一个空字符(null),并刷新输出流,并刷新输出流flush强制刷新输出流强制刷新输出流16有参操纵符函数有参操纵符函数:setbase(int n) 将数制基数设为将数制基数设为n 进制进制setw(int n) 设显示域宽度为设显示域宽度为 n个字符个字符setfill(char c) 设填充字符为设填充字符为 csetiosflages(long f

14、) 按按 f 参数设置格式参数设置格式 ios:fixed 固定的浮点显示固定的浮点显示ios:scientific 指数表示指数表示ios:left 左对齐左对齐ios:right 右对齐右对齐ios:skipws 忽略前导空白忽略前导空白ios:uppercase 16进制数大写输出进制数大写输出ios:lowercase 16进制小写输出进制小写输出ios:showpoint 强制显示小数点强制显示小数点ios:showpos 强制显示符号强制显示符号resetiosflages(long f) 解除解除f 参数设置的格式参数设置的格式 setprecision(int n) 将数据精度

15、设为将数据精度设为n 17操纵符函数操纵符函数setiosflages(long f ) 所使用的实参:所使用的实参:ios_base: skipws 0x0001入入ios_base: left 0x0002出出ios_base: right 0x0004出出ios_base: internal 0x0008出出ios_base: dec 0x0010 入入/出出ios_base: oct 0x0020入入/出出ios_base: hex 0x0040入入/出出ios_base: showbase 0x0080出出ios_base: showpoint 0x0100出出ios_base: u

16、ppercase 0x0200出出ios_base: showpos 0x0400出出ios_base: scientific 0x0800 出出ios_base: fixed 0x1000出出ios_base: unitbuf 0x2000出出ios_base: stdio 0x4000 出出格式标志格式标志 p37518例例11-3设置对齐方式设置对齐方式#include #include using namespace std; void main() double values=1.23,35.36,653.7,4358.24; char *names=Zoot,Jimmy,Al,St

17、an; for(int i=0;i4;i+) coutsetiosflags(ios:left) setw(6)namesi resetiosflags(ios:left) setw(10)valuesi endl;输出流输出结果输出结果:Zoot 1.23Jimmy 35.36Al 653.7Stan 4358.24设置为左对齐设置为左对齐取消设置取消设置19例例11-4控制输出精度控制输出精度#include #include using namespace std; void main() double values=1.23,35.36,653.7,4358.24; char *nam

18、es=Zoot,Jimmy,Al,Stan; coutsetiosflags(ios:scientific); for(int i=0;i4;i+) coutsetiosflags(ios:left) setw(6)namesi resetiosflags(ios:left) setw(10)setprecision(1) valuesiendl;输出流输出结果:输出结果:Zoot 1Jimmy 4e+001Al 7e+002Stan 4e+00320进制进制dec、oct和和hex操纵符设置数据的输入操纵符设置数据的输入和输出所使用的进制。和输出所使用的进制。输出流21输出文件流成员函数输出

19、文件流成员函数l输出流成员函数有三种:输出流成员函数有三种:与操纵符等价的成员函数。与操纵符等价的成员函数。执行非格式化写操作的成员函数。执行非格式化写操作的成员函数。其它修改流状态且不同于操纵符或插入运算其它修改流状态且不同于操纵符或插入运算符的成员函数。符的成员函数。输出流22输出文件流成员函数输出文件流成员函数lopen函数函数把流与一个特定的磁盘文件关联起来。把流与一个特定的磁盘文件关联起来。需要指定打开模式。需要指定打开模式。lput函数函数把一个字符写到输出流中。把一个字符写到输出流中。lwrite函数函数把内存中的一块内容写到输出文件流中把内存中的一块内容写到输出文件流中lsee

20、kp和和tellp函数函数操作文件流的内部指针操作文件流的内部指针lclose函数函数关闭与一个输出文件流关联的磁盘文件关闭与一个输出文件流关联的磁盘文件l错误处理函数错误处理函数在写一个流时进行错误处理在写一个流时进行错误处理输出流23open函数的函数原型函数的函数原型程序对文件的访问,前提是建立文件与流的关联,即所程序对文件的访问,前提是建立文件与流的关联,即所谓谓“打开打开”。文件打开成功,对文件的访问就变成对。文件打开成功,对文件的访问就变成对流的访问。流的访问。void open( char const *, /可带盘符路径的文件名(串)可带盘符路径的文件名(串) int fmod

21、e=out/in, /打开方式打开方式 int access= /保护方式:保护方式: 0 普通普通 );1 只读只读2 隐含隐含 4 系统系统 8 备份备份240x08 ios_base: app 出出0x04 ios_base: ate 出出0x01 ios_base: in 入入/出出0x02 ios_base: out 出出0x10 ios_base: trunc出出0x20 ios_base: nocreat 出出0x40 ios_base: noreplace 出出0x80 ios_base: binary入入/出出输出文件流打开方式输出文件流打开方式 p377251.创建输入输出

22、流对象;创建输入输出流对象;2.设置流对象和文件对象的联系;设置流对象和文件对象的联系;3.进行读写操作;进行读写操作;4.关闭流对象。关闭流对象。“文件操作文件操作”的步的步骤骤26例例11-5向文件输出向文件输出#include using namespace std;struct Date int mo,da,yr; ;void main() Date dt = 6,10,92; ofstream tfile(date.dat,ios:binary); t(char *) &dt,sizeof dt); t();输出流原封不动原封不动(按字按字节节)地写出地写出27文件打开后测试文件打开

23、后测试l检验一个文件打开是否成功,要用检验一个文件打开是否成功,要用fail()它是输出它是输出流成员函数,当它的返回值为流成员函数,当它的返回值为1时表示失败。时表示失败。l用法:用法:void main() Date dt = 6,10,92; ofstream tfile(date.dat,ios:binary); if(t() cerr“error opening file”endl; return; t(char *) &dt,sizeof dt); t();输出流28二进制输出文件的由来二进制输出文件的由来l流的原本流的原本(默认默认) 工作方式是工作方式是文本方式文本方式。l文本

24、方式文本方式是将字节内容转换成文本。是将字节内容转换成文本。l转换是为了易读,在不需要读的场合转换是多余转换是为了易读,在不需要读的场合转换是多余的。的。l有时还会弄巧成拙:有时还会弄巧成拙:将换行符将换行符(n)自动扩充为回车自动扩充为回车(13)换行换行(10);会对所有的控制符会对所有的控制符(031)都进行转换;都进行转换;转换会消耗时间,影响效率。转换会消耗时间,影响效率。l二进制方式则是原样直接传输不转换。二进制方式则是原样直接传输不转换。输出流29二进制输出文件的方法二进制输出文件的方法l以通常方式构造一个流,然后使用以通常方式构造一个流,然后使用setmode成成员函数,在文件

25、打开后改变模式:员函数,在文件打开后改变模式:ofstream ofs(“test.dat”);ofs.setmode();l使用使用ofstream构造函数中的模式参量指定二进构造函数中的模式参量指定二进制输出模式,或使用制输出模式,或使用 open() 函数;函数;l使用二进制操作符代替使用二进制操作符代替setmode成员函数:成员函数:ofs )l提取运算符提取运算符()对于所有标准对于所有标准C+数据类型都是数据类型都是预先设计好的,但对于用户自定义类型则是无法预先设计好的,但对于用户自定义类型则是无法操作的。操作的。l是从一个输入流对象是从一个输入流对象(输入缓冲区中输入缓冲区中)

26、获取字节最获取字节最容易的方法。容易的方法。l定义在定义在ios类中的很多操纵符都可以应用于输入类中的很多操纵符都可以应用于输入流。但是只有少数几个对输入流对象具有实际影流。但是只有少数几个对输入流对象具有实际影响,其中最重要的是进制操纵符响,其中最重要的是进制操纵符dec、oct和和hex。输入流33输入流成员函数输入流成员函数lopen函数把该流与一个特定磁盘文件相关联。函数把该流与一个特定磁盘文件相关联。lget函数的功能与提取运算符(函数的功能与提取运算符()很相像,主要的不)很相像,主要的不同点是同点是get函数在读入数据时包括空白字符。(第函数在读入数据时包括空白字符。(第6章章介

27、绍过)介绍过)lgetline的功能是从输入流中读取多个字符,并且允许的功能是从输入流中读取多个字符,并且允许指定输入终止字符,读取完成后,从读取的内容中删指定输入终止字符,读取完成后,从读取的内容中删除终止字符。(第除终止字符。(第6章介绍过)章介绍过)lread成员函数从一个文件读字节到一个指定的内存区成员函数从一个文件读字节到一个指定的内存区域,由长度参数确定要读的字节数。域,由长度参数确定要读的字节数。如果给出长度参数,当遇到文件结束或者在文本模式如果给出长度参数,当遇到文件结束或者在文本模式文件中遇到文件结束标记字符时结束读取。文件中遇到文件结束标记字符时结束读取。输入流34输入流成

28、员函数输入流成员函数lseekg函数用来设置输入文件流中读取函数用来设置输入文件流中读取数据位置的指针。数据位置的指针。l peek函数用来读出(而非取出)输入函数用来读出(而非取出)输入流缓冲区中的数据流缓冲区中的数据仅看一下数据。仅看一下数据。ltellg函数返回当前文件读指针的位置。函数返回当前文件读指针的位置。lclose函数关闭与一个输入文件流关联函数关闭与一个输入文件流关联的磁盘文件。的磁盘文件。输入流35文件的输入输出文件的输入输出l可以用可以用fstream来创建同时用作文件输入来创建同时用作文件输入输出的流。输出的流。l此时的文件读写指针用的是同一个。因此,此时的文件读写指针

29、用的是同一个。因此,操作时一定要注意调整的合适位置。操作时一定要注意调整的合适位置。输入流36#includeusing namespace std;void main()char str20,str120,str220,str320;fstream out1(TEST.TXT,ios:in|ios:out);out1this is a goodday.endl;/将串写给了文件将串写给了文件coutout1.tellp()endl; /文件指示器走到了文件指示器走到了20coutout1.tellg()endl; / 20out1.seekg(0);/置回到文件头置回到文件头coutout1

30、.tellp()endl; / 是是0coutout1.tellg()strstr1str2str3;/将文件中的串读入各变量将文件中的串读入各变量coutstr str1 str2 str3endl;out1.close();37skipws的用法的用法以下给出跳过前导空白的程序框架:以下给出跳过前导空白的程序框架:. cout “请输入一个整数:请输入一个整数:” i ; if ( cin.good() ) /若用户没有输入空白若用户没有输入空白 / 作作 无错误处理无错误处理 /否则,作否则,作 有错误处理有错误处理38“保证输入正确保证输入正确”的程序框架:的程序框架:. cout “

31、请输入一个整数:请输入一个整数:” i ; if ( cin.good() ) /若用户没有输入错若用户没有输入错 cin.ignore(10,n) /丢弃丢弃buf中最多十个字符,直中最多十个字符,直到到 break; / n为止为止 cin.clear(); /清除状态字,以便重新开始清除状态字,以便重新开始 cout “请输入一个正确值请输入一个正确值 :”endl; cin.ignore(10,n);cout “这个正确值为这个正确值为 :”iendl;.39例例11-8 文件读二进制记录文件读二进制记录#include #include #include using namespac

32、e std;void main() struct double salary; char name23; employee; ifstream is(payroll,ios:binary|ios:nocreate); if (is) is.read(char *) &employee,sizeof(employee); coutemployee.name employee.salaryendl; else coutERROR: Cannot open file payroll.endl; is.close();输入流读出,存于结构体读出,存于结构体变量中,并显示。变量中,并显示。40例例11-

33、9 设置位置指针设置位置指针#include #include using namespace std;void main() char ch; ifstream tfile(payroll,ios:binary|ios:nocreate); if(tfile) t(8); /移动移动8个字节个字节 while(t() /读出名字去显示读出名字去显示 t(ch); if (!ch) break; coutch; else coutERROR: Cannot open file payroll.endl; t();输入流测试流对象,以测试流对象,以判断流的状态。判断流的状态。此句何意?此句何意?

34、 41例例11-10 读文件并显示其中空格的位置读文件并显示其中空格的位置#include #include using namespace std;void main() char ch; ifstream tfile(payroll,ios:binary|ios:nocreate); if(tfile) while(t() streampos here = t(); t(ch); if(ch= ) coutnPosition here is a space; else coutERROR: Cannot open file payroll.endl; t();输入流记下记下“文件位置文件位

35、置指针指针”的值。的值。42l是内存(数据区)与内存(模拟外设)间的数是内存(数据区)与内存(模拟外设)间的数据操作。即串流可以将据操作。即串流可以将string对象或字符串连对象或字符串连接到模拟外设上,实现输入接到模拟外设上,实现输入 / 输出操作。输出操作。l提取时提取时(输入输入)对字符串按变量类型解释,插入对字符串按变量类型解释,插入时时(输出输出)将数据转换成字符串。将数据转换成字符串。l作用:充当作用:充当string对象或字符串与真正外设间对象或字符串与真正外设间数据交换的媒介。如写盘的数据准备、输入数数据交换的媒介。如写盘的数据准备、输入数据验证前的暂存等。据验证前的暂存等。

36、l操作方式:文本字符,顺序操作方式:文本字符,顺序串流串流43l缓冲类:缓冲类:strstreambuf。l对对C方式方式(旧版旧版)的字符串,要使用的字符串,要使用strstream,istrstream, ostrstream类,它们类,它们在头文件在头文件strstream中。中。l对对C+方式方式(新版新版)的的string对象,要使用对象,要使用stringstream,istringstream, ostringstream类,它们在头文件类,它们在头文件sstream中。中。l两种版本的区别:旧版字符串流的构造函数,两种版本的区别:旧版字符串流的构造函数,要求使用者指明内存的确切

37、大小,以便写入字要求使用者指明内存的确切大小,以便写入字符;新版字符串流会自动分配字符所需的内存。符;新版字符串流会自动分配字符所需的内存。44例例 用串流从用串流从string对象中提取数对象中提取数据据#include #include #include using namespace std;void main() string testStr(“Input test 256*0.5”); /testStr是对象是对象 string s1,s2,s3; double x,y; istringstream input(testStr); /用用串对象串对象创建创建串流串流 inputs1s

38、2xs3y;/完成完成串流串流向变量的输入向变量的输入 couts1endss2endsxs3y“=“ x*yendl;从串对象中读出数从串对象中读出数据,存于各变量中,据,存于各变量中,再显示。再显示。运行结果:运行结果:Input test 256*0.5=12845例例 前例题的前例题的C版本版本#include #include using namespace std;void main() char *testStr = “Input test 256*0.5”; char s110,s210,s310; double x,y; istrstream input(testStr);

39、inputs1s2xs3y; couts1endss2endsxs3y“=“ x*yendl;46例例 用串流向用串流向string对象插入数据对象插入数据#include #include using namespace std;void main() ostringstream Output; /没明指出没明指出string对象对象 double x,y; cout“Input x :”x; cout“Input y :”y; Outputx“ * “y“ = “x*yendl; coutOutput.str();调用成员函数,取出调用成员函数,取出无名对象的数据。无名对象的数据。47例例

40、 前例题的前例题的C版本版本#include #include using namespace std;void main() char buf80 ; ostrstream Output(buf ,sizeof(buf); double x,y; cout“Input x :”x; cout“Input y :”y; Outputx“ * “y“ = “x*yends; coutbufendl;在末尾加上在末尾加上048一个使用串流的好例一个使用串流的好例#include#include /为为istringstream 类服务类服务#includeusing namespace std;v

41、oid main() ifstream in ( aaa.txt ) ;/创建一个文件输入流对象创建一个文件输入流对象in /将将in中的每行字符读入串对象中的每行字符读入串对象s中中 for ( string s ; getline ( in, s ) ; ) int a, sum=0 ; /准备好累加器准备好累加器 / 创建一个以串创建一个以串s为依托的为依托的istringstream类的流对象类的流对象sin /然后从串然后从串s中读出串值,变成整数送给中读出串值,变成整数送给a,再累加再累加 for ( istringstream sin ( s ) ; sin a ; sum += a ) ; cout sum n ; /显示本行的累加和显示本行的累加和 49

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号