I/O流控制:
(1)控制浮點數值顯示可用setprecision(n) 控制輸出流顯示浮點數的數字個數,默認輸出有效值為6位。
setiosflags(ios::fixed) 用定點方式表示實數
seiosflags(ios::scientific) 用指數方式表示實數
setiosflags(ios::fixed)與seiosflags(ios::scientific)都可以和setprecision(n)合用,其效果分別為:控制小數點右邊的數字個數,控制指數表示法的小數位數。
在用浮點表示的輸出中,setprecision(n)表示有效位數。
在用定點表示的輸出中,setprecision(n)表示小數位數。
在用指數形式輸出時,setprecision(n)表示小數位數。
小數位數截短顯示時,進行4舍5入處理。
// 測試環境:Visual Studio.net 2003 C++
#include "stdafx.h"
#include <iomanip>
#using <mscorlib.dll>
using namespace System;
using namespace std;
void _tmain()
{
double amount=22.0/7;
cout <<amount <<endl;
cout <<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; // setiosflags(ios::fixed)定義在setiosflags(ios::scientific)前則指數形式不能被正確的輸出。
cout <<setprecision(6);
}
(2)左右對齊輸出可用setiosflags(ios::left)和setiosflags(ios::right)實現。
#include "stdafx.h"
#include <iomanip>
#using <mscorlib.dll>
using namespace System;
using namespace std;
void _tmain()
{
cout <<setiosflags(ios::right) // 交換setiosflags(ios::right)與setiosflags(ios::left)的位置可以實現先左后右對齊,否則都位右對齊
<<setw(5) <<1
<<setw(5) <<2
<<setw(5) <<3 <<endl;
cout <<setiosflags(ios::left)
<<setw(5) <<1
<<setw(5) <<2
<<setw(5) <<3 <<endl;
}
(3)設置填充字符可用setw和setfill實現。setw用來確定顯示的寬度,setfill用來確定一個非空格的特別字符(設置填充的字符)。
(4)強制顯示小數點和符號可用setiosflags(ios::showpoint) 和setiosflags(ios::showpos) 實現。