>[info]# 输入输出的基本操作
本应是按位左移,右移运算符,但在'iostream.h'头文件中被重载为基本数据类型数据的**插入运算符**和**提取运算符**.
cout>表达式1>>...>>表达式n;
一个cout语句可以分写在若干行或多个cout语句;cin类似.
~~~
cin>>a>>b>>c;
Cout<<a
<<b
<<c;
~~~
不能用一个插入运算符<<插入多个输出项.
~~~
cout<<a,b,c; //error
~~~
在用cin输入时,系统会根据变量的类型从输入流中提取相应长度的字节. 注意:cin语句将跳过空格,回车,换行字符;而在C中将不被跳过,如用函数scanf,getchar.
C++中endl相当于C中的\\n起到换行的作用
>[info]# 输入输出流中的控制字符
**头文件:iomanip.h**
| 控制字符 | 作用 |
| ---------------------------- | ------------------ |
| hex | 置基数为16 |
| oct | 置基数为8 |
| dec | 置基数为10 |
| setfill(c) | 填充字符c |
| setprecision(n) | 设置显示小数的精度 |
| setw | 设置域宽 |
| setiosflags(ios::fixed) | 固定的浮点显示 |
| setiosflags(ios::scientific) | 指数表示 |
| setiosflags(ios::left) | 左对齐 |
| setiosflags(ios::right) | 右对齐 |
| setiosflags(ios::skipws) | 忽略前导空白 |
| setiosflags(ios::uppercase) | 16进制数大写输出 |
| setiosflags(ios::lowercase) | 16进制数小写输出 |
**设置值的输出宽度**
- 除了使用空格来强行控制输出间隔外,还可以使用setw(n)控制符.
- 如果一个值需要比setw(n)确定的字符数更多的字符,则该值将使用它所需要的字符数.
- 如果一个值的字符数比setw(n)确定的字符个数要少,则在数字字符前显示空格.
- setw(n)仅仅影响下一个数值输出.
- setw(n)的默认值为宽度0,即setw(0).
**setprecision(n)的用法**
- 使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
- 如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
- 如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
- setprecision(n)在C++中的最小有效个数是1。setprecision(0)相当于setprecision(1)。
## **例子**
```
/* ******控制字符浮点显示****** */
#include <iostream>
#include <iomanip> //要用到格式控制符
using namespace std;
int main()
{
double amount = 22.0/7;
cout <<amount <<endl;
cout <<setprecision(0) <<amount <<endl
<<setprecision(1) <<amount <<endl
<<setprecision(2) <<amount <<endl
<<setprecision(3) <<amount <<endl
<<setprecision(4) <<amount <<endl;
cout <<setiosflags(ios::fixed);
cout <<setprecision(8) <<amount <<endl;
cout <<setiosflags(ios::scientific)
<<amount
<<endl;
cout <<setprecision(6); //重新设置成原默认设置
return 0;
}
```
```
/* ******使用填充字符****** */
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout <<setfill(’*’)
<<setw(2) <<21 <<endl
<<setw(3) <<21 <<endl
<<setw(4) <<21 <<endl;
cout <<setfill(’ ’); // 恢复默认设置
return 0;
}
```
```
/* ******左右对齐输出****** */
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout <<setiosflags(ios::right)
<<setw(5) <<1
<<setw(5) <<2
<<setw(5) <<3 <<endl;
cout <<setiosflags(ios::left)
<<setw(5) <<1
<<setw(5) <<2
<<setw(5) <<3 <<endl;
return 0;
}
```
```
/* ******强制显示小数点****** */
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout <<10.0/5 <<endl;
cout <<setiosflags(ios::showpoint)
<<10.0/5 <<endl;
return 0;
}
```
```
/* ******强制显示符号位****** */
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout <<10 <<" " <<-20 <<endl;
cout <<setiosflags(ios::showpos)
<<10 <<" " <<-20 <<endl;
return 0;
}
```
```
/* ******小数点对齐****** */
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
double a=123.456,b=3.14159,c=-3214.67;
cout<<setiosflags(ios∷fixed)
<<setiosflags(ios∷right)
<<setprecision(2);
cout<<setw(10)<<a<<endl;
cout<<setw(10)<<b<<endl;
cout<<setw(10)<<c<<endl;
return 0;
}
```
- 介绍
- 编程设计语言
- 第一章 对C++的初步认识
- 1.2 最简单的C++程序
- 1.3 C++对C的补充
- 1.3.1 return
- 1.3.2 输入输出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定义常变量
- 1.3.5 函数原型声明
- 1.3.6 内置函数
- 1.3.7 函数重载
- 1.3.8 函数模板
- 1.3.9 有默认值的参数
- 1.3.10 作用域
- 1.3.11 const修饰指针
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 变量
- 1.3.15 字符串变量
- 第二章 类与对象
- 2.2 类的声明和对象的定义
- 2.3 类的成员函数
- 第三章 关于类和对象的进一步讨论
- 3.1 构造函数
- 3.1.1 对象的初始化
- 3.1.2 构造函数
- 3.2 析构函数
- 3.3调用析构函数和构造函数的顺序
- 3.4 对象数组
- 3.5 对象指针
- 3.6 共享数据的保护
- 3.7 对象的建立与释放
- 3.8 对象的赋值与复制
- 3.9 静态成员
- 3.10 友元
- 3.11 类模板
- 第四章 运算符重载
- 数据类型转换
- 运算符重载
- 重载流插入运算符和流提取运算符
- 第五章 继承与派生
- 继承与派生
- 第六章 多态性与虚函数
- 多态性
- 虚函数
- 纯虚函数与抽象类