第3章 键盘输入和屏幕输出

3.1简单的键盘输入

Data Stream(数据流):数据流对象用于在各种不同的设备(如键盘和屏幕)上执行基本的数据输入和输出操作。

所谓流,就是与输入输出设备相关联的数据通信对象。

输入:cin>>" ";        输出:cout <<“ ”;

3.2流操纵符

流操纵符(setw, setfill, fixed,setprecision)用于对输入和输出数据流进行修改。

当程序中出现,在圆括号中有一个参数的流操纵符时,头文件要加#include <iomanip>

setw :设置数据域的宽度(数据项在屏幕上所占的列数)

setw 对输出流中的下一个数据项起作用;

如果域宽设置得太小不足以显示一个数值,

那么系统会自动调整域宽,使其能够显示数据的所有位的数字;

setfill :把占位符从空格改变为其他字符

setfill 把占位符从空格改变为其他字符 ;

setfill 对送入输出流中的所有后继数据项都起作用;

setprecision: 用于指定要显示的数据的位数

流操纵符fixed 和setprecision 将 一直对输出流中的后继数据项起 作用。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a=123456 ;
cout<<"开始"<<setw(8)<<a<<"结束"<<endl;
//输出结果:开始 123456结束
//即setw默认以空格为占位符补位
cout<<"开始"<<setw(8)<<setfill('*')<<a<<"结束"<<endl;
//输出结果:开始**123456结束
//即setfill(' ')用于改变占位符

double b=123.45678;
cout<<"开始"<<b<<"结束"<<endl;
//输出结果:开始123.457结束
cout<<"开始"<<setprecision(7)<<b<<"结束"<<endl;
//输出结果:开始123.4568结束
cout<<"开始"<<fixed<<setprecision(2)<<b<<"结束"<<endl;
//输出结果:开始123.46结束

return 0;
}

 

*endl:将光标移动到一个新行的起始位置,也属于流操纵符,第2章已提到过,不再赘述

3.3 单个字符的输入和输出

Whitespace Characters(空白字符):

在屏幕上产生的显示结果是不可见的空白或空格, 如Tab、Enter和空格键。

输入方法:

一是用noskipws:不管从键盘读入什么,键盘读取单个字符(包括空格)

二是将函数get( )与输入流对象 cin 联合使用

输出方法:

cout and its<<;

利用输出流对象 cout 的成员函数put( )来显示一个字符。

从键盘读取单个字符(包括空格)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char ch1,ch2;
//用noskipws输入,cout<<输出
cout<<"请输入一个字符(含空白字符)";
cin>>noskipws>>ch1;
cout<<"用noskipws输入,cout<<输出的单个字符如下:";
cout<<ch1;
cout<<"***"<<endl;
//用cin.get( )输入,cout.put( )输出
cout<<"请输入一个字符(含空白字符)";
cin.get(ch2) ;
cout<<"用cin.get( )输入,cout.put( )输出的单个字符如下:";
cout.put(ch2);
cout<<"***"<<endl;
//cout<<"***"<<endl;均用于检验空白字符的输出情况
return 0;
}

Programming pitfalls

1. 不要混淆流插入运算符(<<输出)和流提取运算符(>>输入)。

2. 某些流操纵符只作用于下一个数据域(例如setw);

而另外一些流操纵符(例如 setprecision)对所有的后继数据域都起用。

3. 在使用圆括号中有一个参数的流操纵符时,例如setw( 4 ),头文件#include<iomanip>是必需的。

对于其他流操纵符(例如endl),则不需要加入这一行。


 

        快速参考

 

 

posted @ 2022-05-13 14:19  杏花疏影  阅读(143)  评论(0)    收藏  举报