欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談C++ 緩沖區(qū)(buffer)的使用

 更新時(shí)間:2021年06月15日 14:16:31   作者:我是小白呀  
緩沖區(qū)是用來存放流中的數(shù)據(jù),本文詳細(xì)的介紹了C++ 緩沖區(qū)(buffer)的使用,感興趣的小伙伴們可以參考一下

緩沖區(qū)

緩沖區(qū) (buffer) 是內(nèi)存空間的一部分. 在內(nèi)存中會(huì)為每一個(gè)數(shù)據(jù)流開辟一個(gè)內(nèi)存緩沖區(qū).

緩沖區(qū)是用來存放流中的數(shù)據(jù), 緩沖區(qū)中的數(shù)據(jù)就是流. 在 C++ 中, 輸入輸出流被定義為類, C++ 的 I/O 庫(kù)中的類稱為流類 (stream class). cout 和 cin 是 iostream 流類中的流對(duì)象.

在這里插入圖片描述

為什么要引入緩沖區(qū)

我們?yōu)槭裁匆刖彌_區(qū)呢?
比如我們從磁盤里取信息,我們先把讀出的數(shù)據(jù)放在緩沖區(qū),計(jì)算機(jī)再直接從緩沖區(qū)中取數(shù)據(jù),等緩沖區(qū)的數(shù)據(jù)取完后再去磁盤中讀取,這樣就可以減少磁盤的讀寫次數(shù),再加上計(jì)算機(jī)對(duì)緩沖區(qū)的操作大大快于對(duì)磁盤的操作,故應(yīng)用緩沖區(qū)可大大提高計(jì)算機(jī)的運(yùn)行速度。
又比如,我們使用打印機(jī)打印文檔,由于打印機(jī)的打印速度相對(duì)較慢,我們先把文檔輸出到打印機(jī)相應(yīng)的緩沖區(qū),打印機(jī)再自行逐步打印,這時(shí)我們的CPU可以處理別的事情。
現(xiàn)在您基本明白了吧,緩沖區(qū)就是一塊內(nèi)存區(qū),它用在輸入輸出設(shè)備和CPU之間,用來緩存數(shù)據(jù)。它使得低速的輸入輸出設(shè)備和高速的CPU能夠協(xié)調(diào)工作,避免低速的輸入輸出設(shè)備占用CPU,解放出CPU,使其能夠高效率工作

緩沖區(qū)的類型

緩沖區(qū) 分為三種類型:全緩沖、行緩沖和不帶緩沖。
1、全緩沖
在這種情況下,當(dāng)填滿標(biāo)準(zhǔn)I/O緩存后才進(jìn)行實(shí)際I/O操作。全緩沖的典型代表是對(duì)磁盤文件的讀寫。
2、行緩沖
在這種情況下,當(dāng)在輸入和輸出中遇到換行符時(shí),執(zhí)行真正的I/O操作。這時(shí),我們輸入的字符先存放在緩沖區(qū),等按下回車鍵換行時(shí)才進(jìn)行實(shí)際的I/O操作。典型代表是鍵盤輸入數(shù)據(jù)。
3、不帶緩沖
也就是不進(jìn)行緩沖,標(biāo)準(zhǔn)出錯(cuò)情況stderr是典型代表,這使得出錯(cuò)信息可以直接盡快地顯示出來。
緩沖區(qū)的刷新
下列情況會(huì)引發(fā)緩沖區(qū)的刷新:
1、緩沖區(qū)滿時(shí);
2、執(zhí)行flush語句;
3、執(zhí)行endl語句;
4、關(guān)閉文件。

例子

#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;
}

一個(gè)一個(gè)輸入:

1
1
2
2
3
3
4
4
5
5

輸入一個(gè), 即刻輸出, 每次均需待鍵盤輸入.

一次性輸入:

1 2 3 4 5
1
2
3
4
5

每次循環(huán)僅要一個(gè)整數(shù), 但輸入緩沖區(qū)中卻一次放入了 5 個(gè)整數(shù).

 到此這篇關(guān)于淺談C++ 緩沖區(qū)(buffer)的使用的文章就介紹到這了,更多相關(guān)C++ 緩沖區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 頭文件不宜定義變量的原因全面解析

    頭文件不宜定義變量的原因全面解析

    以下是對(duì)頭文件不宜定義變量的原因進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++ 類中有虛函數(shù)(虛函數(shù)表)時(shí) 內(nèi)存分布詳解

    C++ 類中有虛函數(shù)(虛函數(shù)表)時(shí) 內(nèi)存分布詳解

    下面小編就為大家?guī)硪黄狢++ 類中有虛函數(shù)(虛函數(shù)表)時(shí) 內(nèi)存分布詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • 基于C++執(zhí)行內(nèi)存memcpy效率測(cè)試的分析

    基于C++執(zhí)行內(nèi)存memcpy效率測(cè)試的分析

    本篇文章對(duì)C++中執(zhí)行內(nèi)存memcpy的效率進(jìn)行了分析測(cè)試。需要的朋友參考下
    2013-05-05
  • 基于C++ Lambda表達(dá)式的程序優(yōu)化

    基于C++ Lambda表達(dá)式的程序優(yōu)化

    這篇文章主要介紹了基于C++ Lambda表達(dá)式的程序優(yōu)化的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • C++ 輸入一行數(shù)字(含負(fù)數(shù))存入數(shù)組中的案例

    C++ 輸入一行數(shù)字(含負(fù)數(shù))存入數(shù)組中的案例

    這篇文章主要介紹了C++ 輸入一行數(shù)字(含負(fù)數(shù))存入數(shù)組中的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C++中帶空格字符串的輸入問題解決

    C++中帶空格字符串的輸入問題解決

    這篇文章主要給大家介紹了關(guān)于如何解決C++中帶空格字符串的輸入問題,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • C語言 操作符#與##使用方法詳解

    C語言 操作符#與##使用方法詳解

    在類函數(shù)宏中(帶參數(shù)的宏),#號(hào)作為一個(gè)預(yù)處理運(yùn)算符,可以把記號(hào)轉(zhuǎn)換成字符串。##相當(dāng)于連接符,它會(huì)將兩邊的內(nèi)容連接起來,形成新的標(biāo)識(shí)符,下面請(qǐng)看詳細(xì)的教程
    2022-04-04
  • C++?動(dòng)態(tài)規(guī)劃算法使用分析

    C++?動(dòng)態(tài)規(guī)劃算法使用分析

    動(dòng)態(tài)規(guī)劃算法通常用于求解具有某種最優(yōu)性質(zhì)的問題。在這類問題中,可能會(huì)有許多可行解。每一個(gè)解都對(duì)應(yīng)于一個(gè)值,我們希望找到具有最優(yōu)值的解
    2022-03-03
  • C++實(shí)現(xiàn)LeetCode(203.移除鏈表元素)

    C++實(shí)現(xiàn)LeetCode(203.移除鏈表元素)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(203.移除鏈表元素),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++中靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)的使用示例

    C++中靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)的使用示例

    在C/C++中使用庫(kù)的技術(shù),庫(kù)主要分為兩種類型:靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù),本文主要介紹了C++中靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論