淺談C++ 緩沖區(qū)(buffer)的使用
緩沖區(qū)
緩沖區(qū) (buffer) 是內(nèi)存空間的一部分. 在內(nèi)存中會為每一個數(shù)據(jù)流開辟一個內(nèi)存緩沖區(qū).
緩沖區(qū)是用來存放流中的數(shù)據(jù), 緩沖區(qū)中的數(shù)據(jù)就是流. 在 C++ 中, 輸入輸出流被定義為類, C++ 的 I/O 庫中的類稱為流類 (stream class). cout 和 cin 是 iostream 流類中的流對象.

為什么要引入緩沖區(qū)
我們?yōu)槭裁匆刖彌_區(qū)呢?
比如我們從磁盤里取信息,我們先把讀出的數(shù)據(jù)放在緩沖區(qū),計算機再直接從緩沖區(qū)中取數(shù)據(jù),等緩沖區(qū)的數(shù)據(jù)取完后再去磁盤中讀取,這樣就可以減少磁盤的讀寫次數(shù),再加上計算機對緩沖區(qū)的操作大大快于對磁盤的操作,故應用緩沖區(qū)可大大提高計算機的運行速度。
又比如,我們使用打印機打印文檔,由于打印機的打印速度相對較慢,我們先把文檔輸出到打印機相應的緩沖區(qū),打印機再自行逐步打印,這時我們的CPU可以處理別的事情。
現(xiàn)在您基本明白了吧,緩沖區(qū)就是一塊內(nèi)存區(qū),它用在輸入輸出設備和CPU之間,用來緩存數(shù)據(jù)。它使得低速的輸入輸出設備和高速的CPU能夠協(xié)調(diào)工作,避免低速的輸入輸出設備占用CPU,解放出CPU,使其能夠高效率工作
緩沖區(qū)的類型
緩沖區(qū) 分為三種類型:全緩沖、行緩沖和不帶緩沖。
1、全緩沖
在這種情況下,當填滿標準I/O緩存后才進行實際I/O操作。全緩沖的典型代表是對磁盤文件的讀寫。
2、行緩沖
在這種情況下,當在輸入和輸出中遇到換行符時,執(zhí)行真正的I/O操作。這時,我們輸入的字符先存放在緩沖區(qū),等按下回車鍵換行時才進行實際的I/O操作。典型代表是鍵盤輸入數(shù)據(jù)。
3、不帶緩沖
也就是不進行緩沖,標準出錯情況stderr是典型代表,這使得出錯信息可以直接盡快地顯示出來。
緩沖區(qū)的刷新
下列情況會引發(fā)緩沖區(qū)的刷新:
1、緩沖區(qū)滿時;
2、執(zhí)行flush語句;
3、執(zhí)行endl語句;
4、關閉文件。
例子
#include <iostream>
using namespace std;
int main() {
int n[5];
for (int i = 0; i < 5; ++i) {
cin >> n[i];
cout << n[i] << endl;
}
return 0;
}
一個一個輸入:
1
1
2
2
3
3
4
4
5
5
輸入一個, 即刻輸出, 每次均需待鍵盤輸入.
一次性輸入:
1 2 3 4 5
1
2
3
4
5
每次循環(huán)僅要一個整數(shù), 但輸入緩沖區(qū)中卻一次放入了 5 個整數(shù).
到此這篇關于淺談C++ 緩沖區(qū)(buffer)的使用的文章就介紹到這了,更多相關C++ 緩沖區(qū)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C/C++中不同數(shù)據(jù)類型之間的轉(zhuǎn)換詳解
這篇文章主要介紹了C/C++中不同數(shù)據(jù)類型之間的轉(zhuǎn)換詳解,數(shù)據(jù)類型轉(zhuǎn)換是計算機編程中常見的操作,用于將一個數(shù)據(jù)類型轉(zhuǎn)換為另一個數(shù)據(jù)類型,本文將對不同數(shù)據(jù)類型之間的轉(zhuǎn)換作出說明,需要的朋友可以參考下2023-10-10
c++元編程模板函數(shù)重載匹配規(guī)則示例詳解
C++編程語言中賦值運算符重載函數(shù)(operator=)的使用

