>[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 類模板
- 第四章 運算符重載
- 數據類型轉換
- 運算符重載
- 重載流插入運算符和流提取運算符
- 第五章 繼承與派生
- 繼承與派生
- 第六章 多態性與虛函數
- 多態性
- 虛函數
- 純虛函數與抽象類