《第10章 C++的输入输出流.ppt》由会员分享,可在线阅读,更多相关《第10章 C++的输入输出流.ppt(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+程序设计程序设计 第第10章章C+的输入输出流的输入输出流 C+C+程序设计程序设计CC的输入输出流的输入输出流2主要内容主要内容C+C+程序设计程序设计CC的输入输出流的输入输出流3流与流对象流与流对象1 1、流的引入、流的引入 scanf(%d,&a);cina;printf(%d,a);couta;2 2、流的基本概念、流的基本概念 流:数据从一个对象流动到另一个对象,这种 流动抽象为流。流的操作:建立流、删除流、提取(读操作/输 入)、插入(写操作/输出)。C+C+程序设计程序设计CC的输入输出流的输入输出流43 3、C+C+流的继承结构流的继承结构流与流对象流与流对象C+的输入输
2、出操作由它所提供的一个的输入输出操作由它所提供的一个I/O流类的类库流类的类库来实现来实现,该类库是用继承的方法建立起来的,主要有该类库是用继承的方法建立起来的,主要有streambuf和和ios两个平行的基类。两个平行的基类。streambuf类主要负类主要负责缓冲区的处理,同时也为责缓冲区的处理,同时也为ios基类提供缓冲支持。基类提供缓冲支持。Ios类是一个抽象基类,主要提供类是一个抽象基类,主要提供I/O所需的公共操作,其所需的公共操作,其层次结构图如图层次结构图如图10-1。C+C+程序设计程序设计CC的输入输出流的输入输出流5流与流对象流与流对象标准流是标准流是C+预定义的对象,主
3、要提供内存与外部设备预定义的对象,主要提供内存与外部设备进行交互的功能,包括数据提取、插入、解释及格式处进行交互的功能,包括数据提取、插入、解释及格式处理,同时为这种数据交换提供必要的缓冲支持,其关系理,同时为这种数据交换提供必要的缓冲支持,其关系如图如图 10-2。C+C+程序设计程序设计CC的输入输出流的输入输出流6流与流对象流与流对象系统预定义了系统预定义了4个流类对象,供用户使用,见表个流类对象,供用户使用,见表10-1。表表10-1标准输入输出对象标准输入输出对象对象名对象名所属类所属类对应设备对应设备默认的含义默认的含义说明说明cinistream键盘键盘标准输入标准输入可重定向可
4、重定向coutostream屏幕屏幕标准输出标准输出可重定向可重定向cerrostream屏幕屏幕标准错误标准错误不带缓冲不带缓冲clogostream打印机打印机标准错误标准错误带缓冲带缓冲C+C+程序设计程序设计CC的输入输出流的输入输出流7【例例10.1】计算一个数的平方根。计算一个数的平方根。#include#include using namespace std;int main()double x;coutx;/cin的用法的用法 if(x0)cerrx;clogsquare root is:sqrt(x)endl;/clog的用法的用法 return 0;C+C+程序设计程序设计
5、CC的输入输出流的输入输出流81、使用成员函数put()输出一个字符格式为:cout.put(char c)或cout.out(const char ch);2、使用成员函数write()输出字符串格式为:cout.write(const char*str,int n);说明:说明:这些成员函数既可用于文本流,也可用于二进制流,尤其适用于二进制流。标准输出流标准输出流C+C+程序设计程序设计CC的输入输出流的输入输出流9【例例10.2】put()函数使用函数使用void main()char ch1=A,ch2=B;coutA,Bendl;cout.put(ch1).put(,).put(ch
6、2).put(n);cout.put(A).put(,).put(B).put(n);结果A,BA,BA,BC+C+程序设计程序设计CC的输入输出流的输入输出流10【例例10.3】write()函数使用函数使用void main()char*str1=1234567890;/字符指针 char str2=;/字符数组 cout.write(str1,10).put(n);/输出全部字符 cout.write(str2,strlen(str2).put(n);/输出前6个字符 cout.write(ABCDEFGHIJK,6)endl;结果:结果:ABCDEFC+C+程序设计程序设计CC的输入输
7、出流的输入输出流111、使用成员函数get()获取一个字符格式为:cout.get(char&ch)或char ch=cout.get();标准输入流标准输入流注意:注意:get()在获取字符时不忽略空白字符,即输入流中的空白字符也会被当作有效字符读入。2、使用成员函数getline()获取多个字符格式为:cout.getline(char*buf,int size,char delim=n);cgetline()最多可读取Limit-1个字符;C+C+程序设计程序设计CC的输入输出流的输入输出流121.从输入流中读取Limit-1个字符后;2.从输入流中读取换行符或其他终止符后;3.从输出流
8、中读取到文件或输入流结束符后;4.getline()通常用来读取一行字符:3.getline()3.getline()函数结束操作的条件:函数结束操作的条件:标准输入流标准输入流C+C+程序设计程序设计CC的输入输出流的输入输出流13【例例10.4】get()函数使用函数使用void main()int cnt=0;char ch;coutinput a sentence:n;while(ch=cin.get()!=EOF)/按ctrl+Z结束输入 coutch;/输出到屏幕上 cnt+;/字符计数 coutcntendl;C+C+程序设计程序设计CC的输入输出流的输入输出流14【例例10.4
9、】get()函数使用函数使用执行结果:input a sentence:i love you everyoneZ(注:此行是用户输入的)i love you everyoneZ(注:此行是程序显示在屏幕上的)19程序中的EOF(End Of File)是iostream中预定义的符号常量,意思是文件结尾。编程时往往把get()与put()结合起来使用。C+C+程序设计程序设计CC的输入输出流的输入输出流15【例例10.5】用用getline()函数读入一行字符。函数读入一行字符。void main()char ch20;coutch;coutsentence1 is:chendl;cin.ge
10、tline(ch,20,/);/读19个字符或遇到/结束 coutsentence2 is:chendl;cin.getline(ch,20);/读19个字符或遇到n结束 coutsentence3 is:chendl;C+C+程序设计程序设计CC的输入输出流的输入输出流16【例例10.5】用用getline()函数读入一行字符。函数读入一行字符。程序运行结果:input a sentence:I like C+/I study hard(注:此为用户输入)sentence1 is:Isentence2 is:like C+sentence3 is:I study hardC+C+程序设计程序
11、设计CC的输入输出流的输入输出流17 一般可用两种方式来实现:一是使用格式控制符,二是使用流对象的成员函数。1.设置标识字(1).标识常量标识常量ios类中用标识字来记录当前流格式化状态,标识字的每一位用于记录(或控制)一种格式,每种格式都定义了对应的枚举常量,在编程时,可以使用标识常量或直接用对应十六进制值设置输入输出格式。输入输出的格式化输入输出的格式化 C+C+程序设计程序设计CC的输入输出流的输入输出流18(2).iosios中控制格式的成员函数中控制格式的成员函数ios类有6个公有成员函数可以直接操作该标识字,他们为:long flags()const(函数返回流的格式标志),lon
12、g setf(long lFlags)(设置参数lFlags指定的标识位,并返回更新前的标识字),long unsetf(long lFlags)(清除流的格式标志),char fill(char cFill)(设置或读取流的填充字符),int precision(int np)(设置或读取流的浮点数显示精度),int width(int nw)(设置或读取流的输出宽度)。输入输出的格式化输入输出的格式化 C+C+程序设计程序设计CC的输入输出流的输入输出流1910.13 5.36 653.7 1234.24cout.fill(*);*10.13*5.36*653.7*1234.24【例例10
13、.6】用用width控制输出宽度。控制输出宽度。void main()double a =10.13,5.36,653.7,1234.24;for(int i=0;i4;i+)cout.width(10);cout ai n;C+C+程序设计程序设计CC的输入输出流的输入输出流20特别说明特别说明:由于标识字的每一位都表示一种格式,格式位之间会有相互依赖或相互排斥的关系,比如:dec、hex及oct在同一时刻只能有一种起作用,所以为安全起见,在设置一个位前应该消除其它有互斥的位。可以通过ios中的公有静态符号常量来实现。输入输出的格式化输入输出的格式化 例如:cout.setf(ios:oct
14、,ios:basefield);即用ios:basefield先清除格式位,并设置为八进制输出。如果要同时设置几个不互斥的标识位,可用位运算符(“”)连接,如:cout.setf(ios:oct|ios:left);C+C+程序设计程序设计CC的输入输出流的输入输出流21程序运行结果:output with fixed:+3.14output with scientific:3.1429e+005【例例10.7】浮点数输出的格式化。浮点数输出的格式化。void main()double x=22.0/7;coutoutput with fixed:n;cin.setf(ios:fixed|io
15、s:showpos);cout.precision(3);coutxendl;coutoutput with scientific:n;cin.setf(ios:scientific,ios:fixed|ios:showpos);cout.precision(5);coutx*1e5endl;C+C+程序设计程序设计CC的输入输出流的输入输出流222.格式控制符 用上述方式进行格式控制有时稍嫌麻烦,下面引入控制符(操作算子),以简化对IO控制的编程。这些控制符在iostream.h及iomanip.h中声明。(1).iostream中的控制符(见后表中的控制符(见后表10-2)输入输出的格式化
16、输入输出的格式化(2).iomanip中的控制符(见后表中的控制符(见后表10-3)C+C+程序设计程序设计CC的输入输出流的输入输出流23输入输出的格式化输入输出的格式化 表表10-2iostream中常用的控制符中常用的控制符控制符控制符含义含义输入输出输入输出endl输出换行符并刷新流输出换行符并刷新流Oends输出空字符输出空字符Oflush刷新流刷新流Odec将数值转化为十进制将数值转化为十进制I/0hex将数值转化为十六进制将数值转化为十六进制I/0oct将数值转化为八进制将数值转化为八进制I/0ws跳过空白字符(用于输入)跳过空白字符(用于输入)IC+C+程序设计程序设计CC的输
17、入输出流的输入输出流24输入输出的格式化输入输出的格式化 表表10-3iomanip中常用的控制符中常用的控制符控制符控制符作用作用输入输入/输出输出setiosflags(ios:lFlags)设置设置lFlags指定的标志位指定的标志位I/Oresetiosflags(ios:lFlags)清除清除lFlags指定的标志位指定的标志位I/Osetbase(int base)设置基数,设置基数,base=8、10、16I/Osetfill(char n)把填充字符改成把填充字符改成n,作用同,作用同ios:fill()Osetprecision(int n)把精度改成把精度改成n,作用同,作
18、用同ios:precision()Osetw(int n)把域宽改成把域宽改成n,作用同,作用同ios:width()OC+C+程序设计程序设计CC的输入输出流的输入输出流25【例例10.8】用控制符实现不同基数形式的输入输出。用控制符实现不同基数形式的输入输出。#include void main()int a,b,c;coutdeca;couthexb;coutoctc;coutoutput with decimal:n;couta=a,b=b,c=“cendl;coutoutput with hexadecimal:n;couthexa=a,b=b,c=cendl;coutoutput
19、with octal:n;coutocta=a,b=b,c=cendl;C+C+程序设计程序设计CC的输入输出流的输入输出流26【例例10.8】用控制符实现不同基数形式的输入输出。用控制符实现不同基数形式的输入输出。我们将十进制的126分别用三种进制形式输入,得到以下运行结果:input a with decimal:126input b with hexadecimal:7e(注:即十进制的126)input c with octal:176(注:即十进制的126)output with decimal:(用十进制形式输出的126)a=126,b=126,c=126(结果都为126)outp
20、ut with hexadecimal:a=7e,b=7e,c=7eoutput with octal:a=176,b=176,c=176C+C+程序设计程序设计CC的输入输出流的输入输出流27【例例10.9】整数的格式化输出整数的格式化输出#include#include void main()const int k=12345;coutsetw(10)setfill(#)setiosflags(ios:right)kendl;coutsetw(10)setbase(8)setfill(*)resetiosflags(ios:right)setiosflags(ios:left)kendl;
21、运行结果:#1234530071*注:注:程序中setbase(8)相当于iostream中的控制符oct,其余类似。C+C+程序设计程序设计CC的输入输出流的输入输出流28【例例10.10】用控制符实现浮点数输出的格式化用控制符实现浮点数输出的格式化#include#include void main()double x=22.0/7;coutoutput with fixed:n;coutsetiosflags(ios:fixed|ios:showpos);coutsetprecision(3);coutxendl;coutoutput with scientific:n;coutrese
22、tiosflags(ios:fixed|ios:showpos);coutsetiosflags(ios:scientific);coutsetprecision(5);coutx*1e5和),二是用文件流的put()、get()、getline()、read()、write()等成员函数,来实现输入输出操作。下面看几个例子。C+C+程序设计程序设计CC的输入输出流的输入输出流37【例例10.11】用插入与提取符进行文本文件的读写操作。用插入与提取符进行文本文件的读写操作。#include#include#include using namespace std;void main()ofstr
23、eam myoutfile;myoutfile.open(“xie.txt”);if(!myoutfile)coutxie.txt cant open!n;abort();char ch=A;while(chZ)myoutfilech)coutch;coutendl;myinfile.close();C+C+程序设计程序设计CC的输入输出流的输入输出流38文件处理文件处理程序分析:程序分析:程序先把程序先把2626个大写字母写入文本文件个大写字母写入文本文件xie.txtxie.txt中,然中,然后将该文件的内容逐字符读取到内存中,之后送到显示器上显后将该文件的内容逐字符读取到内存中,之后送到
24、显示器上显示。其中示。其中myoutfile.open(myoutfile.open(“xie.txtxie.txt”)并没有指定打开方式,并没有指定打开方式,C+C+规定:对规定:对ofstreamofstream默认为默认为ios:outios:out,ifstreamifstream默认为默认为ios:inios:in。但对。但对fstreamfstream就必须明确指出打开方式。就必须明确指出打开方式。程序中还对打开文件成功与否进了判断,这点很重要。如果程序中还对打开文件成功与否进了判断,这点很重要。如果文件打开失败,自然不能往文件写入数据,否则会出现严重错文件打开失败,自然不能往文件
25、写入数据,否则会出现严重错 误!程序中的误!程序中的abort()abort()函数即为退出程序的函数,该函数在头文函数即为退出程序的函数,该函数在头文件件stdlib.hstdlib.h中说明。中说明。C+C+程序设计程序设计CC的输入输出流的输入输出流39【例例10.12】用用put()与与get()函数进行文本文件的读写操作。函数进行文本文件的读写操作。#include#include#include#include using namespace std;void main()fstream myoutfile,myinfile;myoutfile.open(xie.txt,ios:o
26、ut);char str=Example of file operation.;for(int i=0;i=strlen(str);i+)myoutfile.put(stri);myoutfile.close();myinfile.open(xie.txt,ios:in);char ch;while(myinfile.get(ch)coutch;coutendl;myinfile.close();C+C+程序设计程序设计CC的输入输出流的输入输出流40【例例10.13】用用getline()函数按行读取文本文件的内容。函数按行读取文本文件的内容。#include#include using n
27、amespace std;void browseFile(char*fileName);void main()char fname60;coutfname;browseFile(fname);void browseFile(char*fileName)ifstream infile(fileName,ios:in);char s80;while(!infile.eof()infile.getline(s,80);coutsendl;infile.close();比较比较get()与与getlina()的区别。的区别。C+C+程序设计程序设计CC的输入输出流的输入输出流41【例例10.14】复制
28、文本文件。复制文本文件。#include#include using namespace std;int copyFile(char*srcFile,char*desFile);void main()char sfname60,dfname60;coutsfnamedfname;copyFile(sfname,dfname);int copyFile(char*srcFile,char*desFile)char ch;ifstream infile(srcFile,ios:in);ofstream outfile(desFile,ios:out);if(!infile)cerrsrcFile:
29、File open error!n;return 0;if(!outfile)cerrdesFile:File open error!n;return 0;while(infile.get(ch)outfile.put(ch);cout.Finish!.n;return 1;C+C+程序设计程序设计CC的输入输出流的输入输出流42文件处理文件处理 4.4.二进制文件的读写二进制文件的读写 对二进制文件的读写操作,主要用istream类的成员函数read和write来实现。函数的原型为:istream:read(char*buffer,int len);ostream:write(const c
30、har*buffer,int len);其中:字符指针buffer指向内存的一段空间,len 是要读或写的字节数。C+C+程序设计程序设计CC的输入输出流的输入输出流43【例例10.15】用用read和和write函数实现二进制文件的读写函数实现二进制文件的读写#include#include using namespace std;struct student int num;char name20;double score;Student data4=101,Xietin,90,102,Hulin,88,103,Weiwei,96,104,Libai,99;void main()fstre
31、am myoutfile,myinfile;myoutfile.open(c:student.dat,ios:out|ios:binary);C+C+程序设计程序设计CC的输入输出流的输入输出流44【例例10.15】用用read和和write函数实现二进制文件的读写函数实现二进制文件的读写for(int i=0;i4;i+)myoutfile.write(char*)&datai,sizeof(datai);myoutfile.close();myinfile.open(c:student.dat,ios:in|ios:binary);student temp;for(i=0;i4;i+)my
32、infile.read(char*)&temp,sizeof(temp);couttemp.numttemp.namettemp.scoreendl;myinfile.close();C+C+程序设计程序设计CC的输入输出流的输入输出流45【例例10.15】用用read和和write函数实现二进制文件的读写函数实现二进制文件的读写程序分析:程序分析:先将4个学生的数据写入到文件“c:student.dat”,然后依次读出到结构体变量temp中,并送屏幕显示。特别要注意:read和write函数的第1个参数都是字符指针,如果所要读写的数据类型与之不相符,需要进行强制转换,如:(char*)&te
33、mp,以使形参与实参匹配。另外,本例中往文件中写记录时,也可以一次性把数组写完,不必循环,如下代码:myoutfile.write(char*)&data0,sizeof(data);即:从第一个元素开始写,写入整个数组长度的字节数。C+C+程序设计程序设计CC的输入输出流的输入输出流46文件处理文件处理5.5.随机文件的读写随机文件的读写 C+的二进制文件是流式文件,系统利用文件指针记录流的当前位置,允许对指针进行控制,使它按用户的意图移动到需要的位置,以便在该位置进行读写操作。C+是提供了定位文件指针的成员函数,以实现对文件的随机访问,见表10-5。C+C+程序设计程序设计CC的输入输出流
34、的输入输出流47文件处理文件处理表表10-5文件流与文件指针相关的成员函数文件流与文件指针相关的成员函数成员函数成员函数作用作用gcount()返回最后一次输入所读取的字节数返回最后一次输入所读取的字节数tellg()返回输入文件指针的当前位置返回输入文件指针的当前位置seekg(流中的位置流中的位置)输入文件的指针移到指定位置输入文件的指针移到指定位置seekg(偏移量,参照位置偏移量,参照位置)从从“参照位置参照位置”开始移到开始移到“偏移量偏移量”个字节个字节tellp()返回输出文件指针的当前位置返回输出文件指针的当前位置seekp(流中的位置流中的位置)输出文件的指针移到指定位置输出
35、文件的指针移到指定位置seekp(偏移量,参照位置偏移量,参照位置)从从“参照位置参照位置”开始移到开始移到“偏移量偏移量”个字节个字节C+C+程序设计程序设计CC的输入输出流的输入输出流48文件处理文件处理说明:说明:1)为了便于记忆,函数名中的)为了便于记忆,函数名中的g是是get的缩写,的缩写,p是是put的缩写。的缩写。对输入输出文件定位指针只有一个,但函数有两组,这两组对输入输出文件定位指针只有一个,但函数有两组,这两组函数功能完全一样;函数功能完全一样;2)流中的位置及偏移量都是以字节数为单位的)流中的位置及偏移量都是以字节数为单位的long型;型;3)参照位置的取值及含义见图)参
36、照位置的取值及含义见图103:C+C+程序设计程序设计CC的输入输出流的输入输出流49文件处理文件处理例如:假设例如:假设input是一个是一个istream类对象,则:类对象,则:input.seekg(40);/input流的指针移到第40个字节处input.seekg(20,ios:beg);/以流开始位置为基准,后移20个字节input.seekg(-10,ios:cur);/以流当前位置为基准,前移20个字节input.seekg(-10,ios:end);/以流结尾位置为基准,前移20个字节可以用可以用tellg()函数获得当前指针的位置,它返回的是表示存储地址的长整形函数获得当前
37、指针的位置,它返回的是表示存储地址的长整形值,如:值,如:input.seekg(0,ios:beg);streampos pos=input.tellg();/返回流开始位置的指针值input.seekg(0,ios:end);pos=input.tellg();/返回流末尾位置的指针值C+C+程序设计程序设计CC的输入输出流的输入输出流50【例例10.16】二进制随机文件的读写二进制随机文件的读写 把5个学生的信息存入文件,从中分别读出第1、3、5个学生的数据并显示出来。将第3个学生的修改后保存到原来位置,最后再次读出5个学生信息并显示。#include#include using nam
38、espace std;struct student int num;char name20;float score;C+C+程序设计程序设计CC的输入输出流的输入输出流51【例例10.16】二进制随机文件的读写二进制随机文件的读写 int main()int i;student stud5=1001,Li,85,1002,Fun,97.5,1004,Wang,54,1006,Tan,76.5,1010,ling,96;fstream iofile(c:stud.dat,ios:in|ios:out|ios:binary|ios:trunc);if(!iofile)/如果打开文件错误 cerro
39、pen error!endl;/提示错误 abort();/终止程序 for(i=0;i5;i+)/依次写入5条记录 iofile.write(char*)&studi,sizeof(studi);student stud15;/用数组存放读取的记录C+C+程序设计程序设计CC的输入输出流的输入输出流52【例例10.16】二进制随机文件的读写二进制随机文件的读写 for(i=0;i5;i=i+2)iofile.seekg(i*sizeof(studi),ios:beg);/以起始为基准按要求偏移 iofile.read(char*)&stud1i/2,sizeof(stud1i);/读取一条记
40、录并输出 coutstud1i/2.num stud1i/2.name stud1i/2.scoreendl;coutendl;stud2.num=1012;/依次修改第3条记录的内容 strcpy(stud2.name,Wu);stud2.score=60;iofile.seekp(2*sizeof(stud0),ios:beg);/定位到第3条记录iofile.write(char*)&stud2,sizeof(stud2);/写入修改后的内容iofile.seekg(0,ios:beg);/定位到第1条记录C+C+程序设计程序设计CC的输入输出流的输入输出流53【例例10.16】二进制随
41、机文件的读写二进制随机文件的读写for(i=0;i5;i+)/依次读取5条记录并输出 iofile.read(char*)&studi,sizeof(studi);coutstudi.num studi.name studi.scoreendl;iofile.close();return 0;程序运行结果如下:程序运行结果如下:1001 Li 85(第1条记录)1003 Wang 54(第3条记录)1005 ling 96(第5条记录)1001 Li 851002 Fun 97.51012 Wu 60(注意:第3条记录已经修改过了)1004 Tan 76.51005 ling 96C+C+程序
42、设计程序设计CC的输入输出流的输入输出流54字符串流字符串流 在程序设计中,有时会利用string对象或字符串作为与外设交换数据的缓冲区,C+提供了一种字符串流的方式来实现这种功能。字符串流是以内存中用户自定义的字符串(字符数组字符串流是以内存中用户自定义的字符串(字符数组)为输入输出对象的数据流,也称为内存流)为输入输出对象的数据流,也称为内存流 。C+支持C和C+两种风格的字符串流控制,对于C引入ostrstream、istrstream、strstream这三个类,它们在strstream.h头文件中声明,对于C+引入ostringstream、istringstream、strings
43、tream这三个类,它们包含在sstream.h头文件中。字符串流不是标准设备,需要通过构造函数创建对象。字符串流不是标准设备,需要通过构造函数创建对象。C+C+程序设计程序设计CC的输入输出流的输入输出流55【例例10.17】C+风格字符串流的数据提取风格字符串流的数据提取#include#include/注意此头文件的写法#include using namespace std;void main()string myStr(Multi result 100*0.6);/建立字符串流对象 string str1,str2,str3;double x,y;istringstream inpu
44、t(myStr);/建立输入字符串类字符串流对象并与字符串关联 inputstr1str2xstr3y;/通过input从myStr中提取数据 coutstr1 str2 xstr3y=x*yendl;运行结果:运行结果:Multi result 100*0.6=60C+C+程序设计程序设计CC的输入输出流的输入输出流56【例例10.18】C+风格字符串流的数据提取风格字符串流的数据提取#include#include /注意与C+的sstream不同using namespace std;void main()char*myStr=Multi result 100*0.6;/字符指针 char str110,str210,str310;/字符数组 double x,y;/注意:在C+中是istringstream istrstream input(myStr);/建立istrstream对象并与字符串关联 inputstr1str2xstr3y;/通过input从myStr中提取数据 coutstr1 str2 xstr3y=x*yendl;运行结果:运行结果:Multi result 100*0.6=60