Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 22:37:09
C、C++输入、输出流[二]

C/C++输入/输出流[二]

C/C++输入/输出流[二]

标准输入流是从标准输入设备(如键盘)流向程序的数据。在输入数据时,可以用cin 流或字符输入的流成员函数进行数据的输入。

标准输出流是流向标准输出设备(如显示器)的数据。在输出数据时,往往不指定输出格式,由系统采取默认的格式,但有时需要指定输出格式,通常有两种方法:一种是使用控制符的方法;另一种是使用流对象的有关成员函数。用于控制输出格式的常用成员函数见表3-1。



表 3-1 用于控制输出格式的流成员函数

标准输入流

cin 是istream 类的对象,程序中的变量通过流提取符“>>”从流中提取数据。在提取过程中通常跳过输入流中的空格、Tab 键、换行符等空白字符,只有按Enter 键后,该行数据才被送入键盘缓冲区,形成输入,提取符“>>”才能从中提取数据。

程序描述:通过测试 cin 的真值,判断流对象是否处于正常状态。

【源程序 3-1】

01 #include

02 using namespace std;

03 int main()

04 {

05 cout<<"enter grade:";

06 while(cin>>grade)

07 {

08 if(grade>=85)

09 cout<
10 if(grade<60)

11 cout<
12 cout<<"enter grade:";

13 }

14 cout<<"The end."<
15 return 0;

16 }

程序说明:

第 6 行,输入过程中,如遇到无效字符或文件结束符(不是换行符,而是文件中的数据已读完)时,输入流cin 就处于出错状态,无法正常提取数据。

知识点:

(1) 流提取符“>>”不断地从流中提取数据(每次提取一个浮点数)。如果成功,就赋给grade,此时cin 为真;若不成功则cin 为假。如果输入文件结束符,表示数据已读完。

(2) 在Visual C++环境下运行此程序,在按Ctrl+Z 组合键时,程序运行立即结束,而不输出“The end”。

标准输出流

程序描述:用流控制成员函数输出数据。

【源程序 3-2】

01 #include

02 using namespace std;

03 int main()

04 {

05 int a=21;

06 cout.setf(ios::showbase); //显示基数符号

07 cout<<"dec:"<
08 cout.unsetf(ios::dec); //终止十进制的格式设置

09 cout.setf(ios::hex); //设置以十六进制输出的状态

10 cout<<"hex:"<
11 cout.unsetf(ios::hex); //终止十六进制的格式设置

12 cout.setf(ios::oct); //设置以八进制输出的状态

13 cout<<"oct:"<
14 cout.unsetf(ios::oct);

15 char *pt="China";

16 cout.width(10); //指定域宽为10

17 cout<
18 cout.width(10);

19 cout.fill('*'); //指定空白处以“*”填充

20 cout<
21 double pi=22.0/7.0;

22 cout.setf(ios::scientific); //指定用科学记数法输出

23 cout<<"pi=";

24 cout.width(14);

25 cout<
26 cout.unsetf(ios::scientific); //终止科学记数法状态

27 cout.setf(ios::fixed); //指定用定点形式输出

28 cout.width(12);

29 cout.seft(ios::showpos); //正数输出“+”号

30 cout.setf(ios::internal); //数符出现在左侧

31 cout.precision(6); //保留6 位小数

32 cout<
33 return 0;

34 }

知识点:

(1) 成员函数width(n)和控制符setw(n)只对其后的第一个输出项有效。

(2) 用setf()函数设置格式状态时,可以包含两个或多个格式。




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759