1. 程式人生 > 其它 >C++01-緩衝區,檔案重定向

C++01-緩衝區,檔案重定向

何為緩衝區

緩衝區(buffer):一個儲存區域,用於儲存資料。一般來說,緩衝區的產生是因為CPU的工作速度和匯流排傳送速度遠遠快於外設的處理速度,為了提高效率,CPU一次把能處理的一批資料傳送給外設,然而外設又不能同步處理,就會滯留資料,由此產生了緩衝區。

何為緩衝重新整理操作

IO設施通常將輸入(或輸出)資料儲存在一個緩衝區,讀寫緩衝區的動作與程式中的動作是無關的。我們可以顯示地重新整理輸出緩衝,以便強制將緩衝區中的資料寫入輸出裝置。

預設情況下,讀cin會重新整理cout;程式非正常終止也會重新整理cout。

行輸出時遇到endl,就會將與裝置關聯的緩衝區中的內容刷到裝置中,緩衝重新整理操作可以保證到目前為止程式所產生的所有輸出都真正寫入輸出流中,而不是停留在記憶體中等待寫入流。

程式碼演示

#include <iostream>
int main() {
    std::cout << "Enter two numbers:" << std::endl;
    int v1 = 0, v2 = 0;
    std::cin >> v1 >> v2;
    std::cout << "The sum of " << v1 << " and " << v2
              << " is " << v1 + v2 << std::endl;
    return 0;
}

————————————————
以上文字內容轉載自:C++學習筆記——緩衝區與刷緩衝區*

更多關於緩衝區的重新整理操作相關內容:C、C++緩衝區的重新整理

何為檔案結束符

#include <iostream>
int main() {
    int sum = 0, value = 0;
    //讀取資料直到檔案尾,計算所有讀入的值的和
    while (std::cin >> value)
        sum += value;//等價於sum = sum + value
    std::cout << "Sum is: " << sum << std::endl;
    return 0;
}

如上述程式碼所示,在while迴圈的條件內std::cin >> value代表:讀取到檔案末尾的時候,即沒有資料可供讀取的時候,讀檔案函式返回EOF值

而此處的EOF值即為檔案結束符(End of File)

不同系統中輸入檔案結束符

  • Windows

    Crtl+Z

  • Mac OS

    Command+D

更多相關

關於檔案結束符EOF feof的區別

檔案結束符EOF

何為檔案重定向

重定向:在計算機領域,重定向是大多數命令列直譯器所具有的功能,包括各種可以將標準流重定向使用者規定地點的Unixshells。

輸入重定向:可以使程式能夠使用檔案代替鍵盤作為輸入(則可編輯測試用例文字進行輸入)

輸出重定向:可以使程式能夠使用檔案代替螢幕作為輸出(則可將結果輸出到檔案)

相關部落格

C語言-重定向和檔案