C++标准输入输出流

C++标准输入输出流
C++标准输入输出流

C++标准输入输出流

C++标准输入输出流

在C++语言中,数据的输入和输出(简写为I/O)包括对标准输入

设备键盘和标准输

出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间(当然可

用该空间存储任何信息)进行输入输出这三个方面。对标准输入设备和标准输出设

备的输入输出简称为标准I/O,对在外存磁盘上文件的输入输出简称为文件I/O,对

内存中指定的字符串存储空间的输入输出简称为串I/O。

C++语言系统为实现数据的输入和输出定义了一个庞大的类库,它

包括的类主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrs tream,strstream等,其中ios为根基类,其余都是它的直接或间接派生类。

ios为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流

基类fstreambase和字符串流基类strstreambase,输入文件流类同时继承了输入流

类和文件流基类(当然对于根基类是间接继承),输出文件流类ofstream同时继承了输出流类和文件流基类,输入字符串流类istrstream 同时继承了输入流类和字符串流基类,输出字符串流类ostrstream同时继承了输出流类和字符串流基类,输入输出流类iostream同时继承了输入流类和输出流类,输入输出文件流类fstream同时继承了输入输出流类和文件流基类,输入输出字符串流类strstream同时继承了输入输出流类和字符串流基类。

“流”就是“流动”,是物质从一处向另一处流动的过程。C++流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存)输入和从内存向外部输出设备(如显示器和磁盘)输出的过程,这种输入输出过程被形象地比喻为“流”。为了实现信息的内外流动,C++系统定义了I/O 类库,其中的每一个类都称作相应的流或流类,用以完成某一方面的功能。根据一个流类定义的对象也时常被称为流。如根据文件流类fstream 定义的一个对象fio,可称作为fio流或fio文件流,用它可以同磁盘上一个文件相联系,实现对该文件的输入和输出,fio就等同于与之相联系的文件。

C++系统中的I/O类库,其所有类被包含在iostream.h,fstream.h和strstrea.h这三个系统头文件中,各头文件包含的类如下:

iostream.h包含有:ios, iostream, istream, ostream, iostream_withassign, istream_withassign, ostream_withassign等。

fstream.h包含有:fstream, ifstream, ofstream和fstreambase,以及iostream.h

中的所有类。

Strstrea.h包含有:strstream, istrstream, ostrstream和strstreambase,以及

iostream.h中的所有类。

在一个程序或一个编译单元(即一个程序文件)中当需要进行标准I/O操作时,则必须包含头文件iostream.h,当需要进行文件I/O操作时,则必须包含头文件fstream.h,同样,当需要进行串I/O操作时,则必须包含头文件strstrea.h。在一个程序或编译单元中包含一个头文件的命令格式为“#include<头文件名>”,当然若头文件是用户建立的,则头文件名的两侧不是使用尖括号,而是使用双引号。当系统编译一个C++文件对#include命令进行处理时,是把该命令中指定的文件中的全部内容嵌入到该命令的位置,然后再编译整个C++文件生成相应的目标代码文件。

C++不仅定义有现成的I/O类库供用户使用,而且还为用户进行标准I/O操作定义了四个类对象,它们分别是cin,cout,cerr和clog,其中cin为istream_withassign流类的对象,代表标准输入设备键盘,也称为cin流或标准输入流,后三个为ostream_withassign流类的对象,cout代表标准输出设备显示器,也称为cout流或标准输出流,cerr和clog含义相同,均代表错误信息输出设备显示器。因此当进行键盘输入时使用cin 流,当进行显示器输出时使用cout流,当进行错误信息输出时使用cerr 或clog。

函数,函数的具体声明格式为:

istream& operator>>(简单类型标识符&);

简单类型标识符可以为char, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, float, double, long double, char*, signed char*, unsigned char*之中的任何一种,对于每一种类型都对应着一个右移操作符重载函数。由于右移操作符重载用于给变量输入数据的操作,所以又称为提取操作符,即从流中提取出数据赋给变量。

当系统执行cin>>x操作时,将根据实参x的类型调用相应的提取操作符重载函数,把x引用传送给对应的形参,接着从键盘的输入中读入一个值并赋给x(因形参是x的别名)后,返回cin流,以便继续使用提取操作符为下一个变量输入数据。

当从键盘上输入数据时,只有当输入完数据并按下回车键后,系统才把该行数据存入到键盘缓冲区,供cin流顺序读取给变量。还有,从键盘上输入的每个数据之间必须用空格或回车符分开,因为cin为一个变量读入数据时是以空格或回车符作为其结束标志的。

当cin>>x操作中的x为字符指针类型时,则要求从键盘的输入中读取一个字符串,并把它赋值给x所指向的存储空间中,若x没有事先指向一个允许写入信息的存储空间,则无法完成输入操作。另外从键盘上输入的字符串,其两边不能带有双引号定界符,若带有只作为双引号字符看待。对于输入的字符也是如此,不能带有单引号定界符。

函数,函数的具体声明格式为:

ostream& operator<<(简单类型标识符);

简单类型标识符除了与在istream流类中声明右移操作符重载函数给出的所有简单类型标识符相同以外,还增加一个void* 类型,用于输出任何指针(但不能是字符指针,因为它将被作为字符串处理,即输出所指向存储空间中保存的一个字符串)的值。由于左移操作符重载用于向流中输出表达式的值,所以又称为插入操作符。如当输出流是cout 时,则就把表达式的值插入到显示器上,即输出到显示器显示出来。

当系统执行cout<

二、输入输出格式控制

1.ios类中的枚举常量

在根基类ios中定义有三个用户需要使用的枚举类型,由于它们是在公用成员部分定义的,所以其中的每个枚举类型常量在加上ios::前缀

后都可以为本类成员函数和所有外部函数访问。在三个枚举类型中有一个无名枚举类型,其中定义的每个枚举常量都是用于设置控制输入输出格式的标志使用的。该枚举类型定义如下:

enum {skipws, left, right, internal, dec, oct, hex, showbase,

showpoint, uppercase, showpos, scientific, fixed, unitbuf, stdio

};

各枚举常量的含义如下:

skipws

利用它设置对应标志后,从流中输入数据时跳过当前位置及后面的所有连续的空白字符,从第一个非空白字符起读数,否则不跳过空白字符。空格、制表符’\t’、回车符’\r’和换行符’\n’统称为空白符。缺省为设置。

left, right, internal

left在指定的域宽内按左对齐输出,right按右对齐输出,而internal 使数值的符号按左对齐、数值本身按右对齐输出。域宽内剩余的字符位置用填充符填充。缺省为right设置。在任一时刻只有一种有效。

dec, oct, hex

设置dec对应标志后,使以后的数值按十进制输出,设置oct后按八进制输出,而设置hex后则按十六进制输出。缺省为dec设置。

showbase

设置对应标志后使数值输出的前面加上“基指示符”,八进制数的基指示符为数字0,十六进制数的基指示符为0x,十进制数没有基指示符。缺省为不设置,即在数值输出的前面不加基指示符。

showpoint

强制输出的浮点数中带有小数点和小数尾部的无效数字0。缺省为不设置。

uppercase

使输出的十六进制数和浮点数中使用的字母为大写。缺省为不设置。即输出的十六进制数和浮点数中使用的字母为小写。

showpos

使输出的正数前带有正号“+”。缺省为不设置。即输出的正数前不带任何符号。

scientific, fixed

进行scientific设置后使浮点数按科学表示法输出,进行fixed设置后使浮点数按定点表示法输出。只能任设其一。缺省时由系统根据输出的数值选用合适的表示输出。

unitbuf, stdio

这两个常量很少使用,所以不予介绍。

在ios中定义的第二个枚举类型为:

enum open_mode {in, out, ate, app, trunc, nocreate, noreplace, binany};

其中的每个枚举常量规定一种文件打开的方式,在定义文件流对象和打开文件时使用。

在ios中定义的第三个枚举类型为:

enum seek_dir {beg, cur, end};

其中的每个枚举常量用于对文件指针的定位操作上。

2. ios类中的成员函数

ios类提供成员函数对流的状态进行检测和进行输入输出格式控制等操作,每个成员函数的声明格式和简要说明如下:

int bad(); //操作出错时返回非0值。

int eof(); //读取到流中最后的文件结束符时返回非0值。

int fail(); //操作失败时返回非0值。

void clear(); //清除bad,eof和fail所对应的标志状态,使之恢复为正常状态

//值0,使good标志状态恢复为1。

char fill(); //返回当前使用的填充字符。

char fill(char c); //重新设置流中用于输出数据的填充字符为c的值,返回此

//前的填充字符。系统预设置填充字符为空格。

long flags(); //返回当前用于I/O控制的格式状态字。

long flags(long f); //重新设置格式状态字为f的值,返回此前的格式状态字。

int good(); //操作正常时返回非0值,当操作出错、失败和读到文件结束符时

//均为不正常,则返回0。

int precision(); //返回浮点数输出精度,即输出的有效数字的位数。

int precision(int n); //设置浮点数的输出精度为n,返回此前的输出精度。

//系统预设置的输出精度为6,即输出的浮点数最多

//具有6位为有效数字。

int rdstate(); //操作正常时返回0,否则返回非0值,它与good()正好相反。

long setf(long f); //根据参数f设置相应的格式化标志,返回此前的设置。

//该参数f所对应的实参为无名枚举类型中的枚举常量(

//又称格式化常量),可以同时使用一个或多个常量,每两个

//常量之间要用按位或操作符连接。如当需要左对齐输出,

//并使数值中的字母大写时,则调用该函数的实参为ios::

//left | ios::uppercase。

long unsetf(long f); //根据参数f清除相应的格式化标志,返回此前的设置。

//如要清除此前的左对齐输出设置,恢复缺省的右对齐输出

//设置,则调用该函数的实参为ios::left。

int width(); //返回当前的输出域宽。若返回数值0则表明没有为刚才输出的

//数值设置输出域宽,输出域宽是指输出的值在流中所占有的字节数。

int width(int w); //设置下一个数据值的输出域宽为w,返回为输出上一个数

//据值所规定的域宽,若无规定则返回0。注意:此设置不

//是一直有效,而只是对下一个输出数据有效。

因为所有I/O流类都是ios的派生类,所以它们的对象都可以调用ios类中的成员函数和使用ios类中的格式化常量进行输入输出格式控制。下面以标准输出流对象cout为例说明输出的格式化控制。

程序1:

#include

void main()

{

int x=30, y=300, z=1024;

cout<

cout.setf(ios::oct); //设置为八进制输出

cout<

cout.unsetf(ios::oct);

//取消八进制输出设置,恢复按十进制输出

cout.setf(ios::hex); //设置为十六进制输出

cout<

cout.setf(ios::showbase | ios::uppercase);

//设置基指示符输出和数值中的字母大写输出

cout<

cout.unsetf(ios::showbase | ios::uppercase);

//取消基指示符输出和数值中的字母大写输出

cout<

cout.unsetf(ios::hex);

//取消十六进制输出设置,恢复按十进制输出

cout<

}

此程序的运行结果如下:

30 300 1024

36 454 2000

1e 12c 400

0X1E 0X12C 0X400

1e 12c 400

30 300 1024

程序2:

#include

void main()

{

int x=468;

double y=-3.425648;

cout<<"x=";

cout.width(10); //设置输出下一个数据的域宽为10

cout<>变量【>>变量】 功能:从键盘取得输入的数据流 例:int a; float b; scanf ( "%d %f",&a,&b) ; cin >> a>> b ; cin>>a,b ;× 可以从键盘输入: 20 31.45 各数据项间以空格分开 三.C++输入输出语句的特点 ●简洁:不需要指定数据的类型; ●需要头文件iostream.h,在程序的首行用# include命令将该文件“包含”进源程 序。

例1.4:改写例1.3(P5)的程序 # include "iostream.h" // 文件包含命令 int max(int x, int y) // 定义max( )子函数,求两个数中的较大值{ int z; if (x>y) z=x; else z=y; return z; } void main( ) { int max(int x, int y); // 此语句可省略 int a,b,c; cin>>a>>b; // 从键盘输入两个数据送到变量a和b中 c=max(a,b); // 调用max( )函数比较a和b,并把结果赋给c cout<<"max="<

C++输入输出流实验报告

深圳大学实验报告 实验课程名称:程序设计实验与课程设计 实验项目名称:实验10 C++流输入与流输出 学院:计软专业:计科 报告人:学号:班级: 3 同组人:无 指导教师:朱安民 实验时间:2014年6月16日提交时间:2014年6月16 声明: 本次实验内容由报告人和同组人独立完成,所有涉及到他人的工作均已说明。报告人和同组人均同意教师及学校为教学活动而引用本实验的内容,且无需事先征得同意和特别说明。 教务处制

一、实验目的 1.掌握标准输入输出(iostream库中标准对象cin、cout)的使用 2.掌握IO流类成员函数输入输出(cin.get, cin.getline, cin.read; cout.put, cout.write)的使用 3.掌握输出格式(标准控制符、IO流类成员函数、iomanip头文件中的控制符)控制方法 4.掌握磁盘文件的输入输出方法 二、实验说明和实验环境 1.在奥特曼类的基础上,编写一个程序,重载运算符“》”和“《”,使得用户可以直接(格式化)输出奥特曼的状态。在主程序中输入若干个(3个)奥特曼的状态,并分别将它们保存到文件RecordU.txt中。然后读取并显示文件中的内容。 2.奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display 在奥特曼的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0 在怪兽的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍 对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。 注意:为了实现运算符《重载,需要包含头文件 经常天降怪石会砸中奥特曼或怪兽,如果被幸运石砸中,就会处于“鸿运当头”状态,被砸对象除等级外其它属性全部翻倍;如果被厄运石砸中,就会陷入“倒霉透顶”状态,被砸对象除等级外其它属性全部减半。把“鸿运当头”封装成操作,并用重载运算符++来实现;“倒霉透顶”封装成操作,并用重载运算符--来实现。两个重载都需要用友元方法。 3.奥特曼和怪物经过一番战斗斗,需要中场休息,休息时把各自的属性值存放到一个文件中,休息结束时需要从文件中读取之前的状态继续战斗。 奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display 奥特曼和怪兽的属性值均来自于文件(文件的第一行是奥特曼的数据,初始状态为:等级是8,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0,文件的第二行是怪兽的数据,初始状态为等级是4,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍)对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。 把信息直接从文件读出来并赋值给奥特曼和怪兽,需要重载》运算符作为友元; 把奥特曼和怪兽的值写入文件,要求重载《运算符作为友元

CC++输入输出流总结

C/C++输入输出流总结 C++ I/O C++支持两种I/O,第一种是从C语言继承来的,一种是由C++定义的面向对象I/O系统。 1、int getchar(void);返回一个整数值,也可以指定这个值为char变量,因为这个字符包含于低位字节中(高位字节通常为0),如果有错,getchar()返回EOF。但是他有一个潜在的问题,正常情况下,getchar()缓存输入,直到键入了回车键(这个大家应该深有体会,就是getchar()貌似只认识回车键,原来是这个原因)这称为行缓冲输入,在键入的字符实际传送给程序之前必须敲入一个回车键。 2、int putchar(int c); 虽然putchar()带一个整数参数,通常可以用一个字符的变元调用它,但是只有其低位字节被实际输出到屏幕上,putchar()函数放回被写入的字符,若操作失败,返回EOF(宏EOF 被定义于stdio.h中,通常其值为-1)。 3、int getch(void); int getche(void); 两个最常用的交互式函数,对于大多数编译器,这些函数的原型都可在头文件conio.h中找到,对于某些编译器中这些函数前面有一下划线。如_getch()和_getche();这就是为什么在VS2008中经常提示要在前面加一个'_'. 4、char* gets(char* str); 读取从键盘上输入的字符串并把它存放在由其他变元所指的地址中,它从键盘读入字符,直到遇到回车键为止。回车键不输入串的一部分,相反,将空结束符放在串尾来代替,并且由gets()返回。但是使用gets()是要小心,因为它不对正在接受输入的字符数组执行边界检查。因此,用户可以键入比数组能够容纳的更多的字符。尽管对于你使用的范例程序和简单使用工具是很好的,在商用代码中一般不是用它。它的的替代物是fgets();稍后描述。5、int puts(const char* str); 将它的字符串变元写到屏幕上,后跟一新行。它的调用比printf();开销小,因为puts()只能输入字符串,不能输出数字或进行格式转换,因而puts()用的空间少且速度比printf()快。因此函数puts()经常用于代码优化,操作失败,函数puts()返回EOF,否则返回非负值。 6、int printf(const char* control_string,...);

C语言标准输入输出详解

C CC C输入输出函数 输入输出函数输入输出函数 输入输出函数 本节主要介绍Turbo C2.0标准输入输出函数和文件的输入输出函数。通过本 节的学习可以使读者掌握Turbo C2.0的屏幕输出、键盘输入输出以及磁盘文件的 读写函数, 并能开始进行一些简单的程序的编写。 控制流程语句主要包括: 条件语句、循环语句和开关语句。 1.1 标准输入输出函数 1.1.1 格式化输入输出函数 Turbo C2.0 标准库提供了两个控制台格式化输入、输出函数printf( ) 和 scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。 printf()函数用来向标准输出设备(屏幕)写数据; scanf() 函数用来从标准输入

设备(键盘)上读数据。下面详细介绍这两个函数的用法。 一、printf()函数 printf()函数是格式化输出函数, 一般用于向标准输出设备按 规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为: printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些 字符将按原 样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个 规定字符, 用来确定输出内容格式。 参量表是需要输出的一系列参数, 其个数必须与格式化字符串 所说明的输出 参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则 将会出现意想 不到的错误。 1. 格式化规定符 Turbo C2.0提供的格式化规定符如下: ━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号作用 ────────────────────────── %d 十进制有符号整数 %u 十进制无符号整数

C++文件的输入输出

C++中的文件输入/输出(1) 原作:Ilia Yordanov, loobian@https://www.360docs.net/doc/b215926269.html, 简介 本教程将以C++最基本的文件I/O(输出/输出)开始。此后,我将从更深入的方面,为你展示一些技巧,并分析给出一些有用的函数。 你需要对C++有一个较好的理解,否则这个教程于你而言将是陌生而毫无用处。 你的第一个程序 首先我将给出一段代码,接着再逐行进行解释。我们的第一个程序将建立一个文件,并写入一些字符: #include void main() // 程序从这里开始运行 { ofstream SaveFile(“cpp-home.txt”); SaveFile << “Hello World, from https://www.360docs.net/doc/b215926269.html, and Loobian!”; SaveFile.close(); } 仅仅如此吗?没错!这个程序将在当前运行目录下建立一个名为 cpp-home.txt的文件,并向它写入“Hello World, from https://www.360docs.net/doc/b215926269.html, and Loobian!”。 下面给出各行的含义: #include ——你需要包含此文件以使用C++的文件输入/输出函数。注意:一旦包含了这个文件,你不再需要(为了使用cout/cin)包含iostream.h,因为fstream.h已经自动包含了它。 在这个头文件中声明了若干个类,包括ifstream,ofstream及fstream,它们都继承自istream和ostream类。 ofstream SaveFile(“cpp-home.txt”); 1)ofstream即“output file stream(输出文件流)”。它将建立一个句柄(handle),以便我们以后能以一个文件流的形式写入文件。 2)SaveFile ——这是文件句柄的名字,当然,你还可以换用任何一个你想要的名称。

C++标准输入输出流

C++标准输入输出流 C++标准输入输出流 在C++语言中,数据的输入和输出(简写为I/O)包括对标准输入 设备键盘和标准输 出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间(当然可 用该空间存储任何信息)进行输入输出这三个方面。对标准输入设备和标准输出设 备的输入输出简称为标准I/O,对在外存磁盘上文件的输入输出简称为文件I/O,对 内存中指定的字符串存储空间的输入输出简称为串I/O。 C++语言系统为实现数据的输入和输出定义了一个庞大的类库,它 包括的类主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrs tream,strstream等,其中ios为根基类,其余都是它的直接或间接派生类。 ios为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流 基类fstreambase和字符串流基类strstreambase,输入文件流类同时继承了输入流

类和文件流基类(当然对于根基类是间接继承),输出文件流类ofstream同时继承了输出流类和文件流基类,输入字符串流类istrstream 同时继承了输入流类和字符串流基类,输出字符串流类ostrstream同时继承了输出流类和字符串流基类,输入输出流类iostream同时继承了输入流类和输出流类,输入输出文件流类fstream同时继承了输入输出流类和文件流基类,输入输出字符串流类strstream同时继承了输入输出流类和字符串流基类。 “流”就是“流动”,是物质从一处向另一处流动的过程。C++流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存)输入和从内存向外部输出设备(如显示器和磁盘)输出的过程,这种输入输出过程被形象地比喻为“流”。为了实现信息的内外流动,C++系统定义了I/O 类库,其中的每一个类都称作相应的流或流类,用以完成某一方面的功能。根据一个流类定义的对象也时常被称为流。如根据文件流类fstream 定义的一个对象fio,可称作为fio流或fio文件流,用它可以同磁盘上一个文件相联系,实现对该文件的输入和输出,fio就等同于与之相联系的文件。 C++系统中的I/O类库,其所有类被包含在iostream.h,fstream.h和strstrea.h这三个系统头文件中,各头文件包含的类如下: iostream.h包含有:ios, iostream, istream, ostream, iostream_withassign, istream_withassign, ostream_withassign等。 fstream.h包含有:fstream, ifstream, ofstream和fstreambase,以及iostream.h

C++的输入和输出与标准输出流

* 掌握:输入输出的含意;文件流以及输入/输出的格式控制;标准输出在C++程序中的应用。 * 理解:C++类库中的常用流类。 * 了解:C++的I/O对C的发展。 重点、难点 ◆输入输出的含意;文件流以及输入/输出的格式控制;标准输出在C++程序中的应用。 一、C++ 输入输出的含义 以前所用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上。从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件。程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。C++的输入与输出包括以下3方面的内容: 1、对系统指定的标准设备的输入和输出。简称标准I/O。(设备) 2、以外存磁盘(或光盘)文件为对象进行输入和输出。简称文件I/0。(文件) 3、对内存中指定的空间进行输入和输出。简称串I/O。(内存) C++采取不同的方法来实现以上3种输人输出。为了实现数据的有效流动,C++系统提供了庞大的I/O类库,调用不同的类去实现不同的功能。 二、C++的I/O对C的发展—类型安全和可扩展性 C语言中I/O存在问题: 1、在C语言中,用prinff和scanf进行输入输出,往往不能保证所输入输出的数据是可靠的、安全的。学过C语言的读者可以分析下面的用法:想用格式符%d输出一个整数,但不小心错用了它输出单精度变量和字符串,会出现什么情况?假定所用的系统int型占两个字节。printf("%d",i);//i为整型变量,正确,输出i的值 printf("%d",f);//f为单精度变量,输出变量中前两个字节的内容 printf("%d","C++");//输出字符串"C++”的起始地址 编译系统认为以上语句都是合法的,而不对数据类型的合法性进行检查,显然所得到的结果不是人们所期望的。 2、在用scanf输入时,有时出现的问题是很隐蔽的。如

c++输入输出流实验报告

实验四输入输出流 实验课程名:面向对象程序设计(C++) 专业班级:学号:姓名: 实验时间:实验地点:指导教师: 一、实验目的和要求 (1) 理解类和对象的概念,掌握声明类和定义对象的方法。 (2) 掌握构造函数和析构函数的实现方法。 (3) 初步掌握使用类和对象编制C++程序。 (4) 掌握对象数组、对象指针和string类的使用方法。 (5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。 (6) 掌握类对象作为成员的使用方法。 (7) 掌握静态数据成员和静态成员函数的使用方法。 (8) 理解友元的概念和掌握友元的使用方法。 二、实验内容 1.定义描述职工工资的类Laborage,数据成员为职工号(No)、姓名(Name[8])、应发工资(Ssalary)、社保金(Security)、实发工资(Fsalary)。定义公有成员函数Input(),在Input()函数内输入职工号、姓名、应发工资、社保金,实发工资由公式:Fsalary=Ssalary-Security计算。定义输出职工工资的成员函数Show()。在显示函数Show()中,职工号、姓名的输出域宽为8、左对齐,其余数据的输出域宽为10、右对齐、保留小数点后两位,输出格式均用预定义格式控制函数设置。在主函数中用Laborage类定义职工对象数组a[3]。用Input()输入职工工资,用Show()显示每个职工的工资。(提示:用getline输入姓名后,必须用回车结束姓名输入) 实验数据: 1001 Zhou Zhi 3000 200 1002 Chen Hua 4000 400 1003 Wang Fan 5000 500 实验代码: #include #include #include using namespace std; class Laborage { public: Laborage(){} void input();

相关主题
相关文档
最新文档