C++标准输出流
C++標準輸出流
開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年07月06日C++程序中,對數據的輸出輸入是以字節流實現的, 應用程序對字節序列作
出各種數據解釋, I/O系統的任務就是在內存和外部設備之間穩定可靠地傳
輸數據和解釋數據。
流類對象可以建立和刪除,可以從流中獲取數據和向流添加數據,c++的輸出流都是以字節形式進行數據傳遞。
流庫(stream library)是用繼承方法建立的輸入輸出類庫, 流庫具有兩個平行的基類:streambuf 和 ios 類,所有流類均以兩者之一作為基類,意思是c++中所有輸出輸入流的基類都是streambuf 和 ios 類。
在c++中我們常用的是標準流,標準流是C++預定義的對象,提供內存與外部設備進行數據交互功能,流的操作是流類的公有成員函數。
我們在操作標準流的時候一般是用到iostream.h頭文件,它包含所有的標準輸出流操作。
我們來看一下輸出流的操作有:
put()無格式,插入一個字節;
write()從無格式,插入一字節序列;
它們屬于ostream類的公有成員,雖然ostream類作不止于這些,但是常用的就這兩個,還有一個setf()它是流操作里面的函數,它的作用是設置輸出格式。
ios提供直接設置標志字的控制格式函數, iostream和iomanip庫還提供了一批控制符簡化I/O格式化操作,也就是流操作。
輸出流的標志字有:
狀態標志 值 含義
left 0X0002 左對齊輸出
right 0X0004 右對齊輸出
internal 0X0008 在符號位和基指示符后填入字符
dec 0X0010 轉換基制為十進制
oct 0X0020 轉換基制為八進制
hex 0X0040 轉換基制為十六進制
showbase 0X0080 在輸出中顯示基指示符
showpoint 0X0100 輸出時顯示小數點
uppercase 0X0200 十六進制輸出時一律用大寫字母
showpos 0X0400 正整數前加“+”號
scientific 0X0800 科學示數法顯示浮點數
fixed 0X1000 定點形式顯示浮點數
unitbuf 0X2000 輸出操作后立即刷新流
stdio 0X4000 輸出操作后刷新stdout 和 stderr
下面是上面三個方法和一些標志字的演示
#include
#include
#include
using namespace std;
void main()
{
char s = “Hello”;
int a = 10;
float b = 22.0/7;
cout.fill(’’); // 置填充符
cout.width(10); // 置輸出寬度
cout.setf(ios::left); // 左對齊
cout << s << endl;
cout << setiosflags(ios::right) <<setw(10) << s << setfill(’’) << endl;
cout << “put():”;
cout.put(‘6’);
cout << “\n” << “write():”;
cout.write(s,strlen(s));
cout.setf(ios::hex, ios::basefield);
cout << “\nhex標志:” << a << “\n”;
cout << “fixed和showpos標志:\n”;
cout.setf(ios::fixed | ios::showpos);
for (int i = 0; i < 5; i++)
{
cout.precision(i);//用參數設置數據顯示精度
cout << b << “\n”;
}
cout << “scientific標志:\n”;
cout.setf(ios::scientific, ios::fixed | ios::showpos);
for (int i = 0; i < 5; i++)
{
cout.precision(i);//用參數設置數據顯示精度
cout << b1e5 << “\n”;
}
}
我們可以看到的輸出左對齊和右對齊我用了兩個方法,右對齊的方法是iomanip類的,它是格式控制符,輸出常用的就是這三個setfill ( char c )設置填充符、setprecision ( int n )設置浮點數輸出精度、setw ( int n )設置輸出寬度、setiosflags ( ios::lFlags )設置lFlags指定的標志位,標志位就是上面說的標志字,下面就輸出結果:
總結
- 上一篇: 为什么不懂技术的人可以做产品经理(下)?
- 下一篇: 产品经理必看:终于有人把数据指标讲明白了