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()函数设置格式状态时,可以包含两个或多个格式。