[英]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.