簡體   English   中英

標准輸出緩沖區叫什么?

[英]What is the standard output buffer called?

當我寫一個文件緩沖時,一切正常。 我想知道什么是標准輸出的緩沖區。

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
  filebuf m;
  m.open("/home/patryk/untitled6/text.txt", ios::out);
  ostream out(&m);
  out<<"to ja";
}

我不想使用例如cout.rdbuf。 只有以上

輸出流的名稱

#include <iostream>
using namespace std;
int main()
{

  ostream out(cout.rdbuf());
  out<<"to ja";
}

這是從std::streambuf派生的實現定義的類型,這是一個流行的C ++參考所說的內容

全局對象std :: cout和std :: wcout控制輸出到與標准C輸出流stdout關聯的實現定義類型的流緩沖區(從std :: streambuf派生)。

這意味着您只能使用std::cout.rdbuf()實際訪問std::cout當前的實例-除非您的編譯器供應商提供對其相關內部的非標准訪問。

例如,GCC提供了stdio_filebuf ,可以將其實例“包裝”在標准輸出文件描述符中。

在兩個示例中,都不需要按std::ostream使用std::ostream

在第一個示例中,使用std::ofstream代替std::filebuf

ofstream out("/home/patryk/untitled6/text.txt");
out << "to ja";

在第二個示例中, std::cout已經是一個std::ostream因此只需直接將其寫入:

cout << "to ja";

在這兩種情況下,這都將抽象出如何實現實際緩沖區。 僅關注更高級別的流接口本身。 所使用的緩沖區只是實現細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM