你也可以爲你的文件流指定一個緩衝區:std :: fstream與多個緩衝區?
char buf[BUFFER_SIZE];
std::ofstream file("file", std::ios_base::binary | std::ios_base::out);
if (file.is_open())
{
file.rdbuf()->pubsetbuf(buf, BUFFER_SIZE);
file << "abcd";
}
我想現在要做的,不僅僅是一個緩衝區使用更多:
char* buf[] = { new char[BUFFER_SIZE], new char[BUFFER_SIZE], new char[BUFFER_SIZE], };
是否有可能,而無需創建一個自定義派生std :: streambuf?
編輯: 我想我需要解釋我想做更詳細的。請考慮以下情況: - 我想要讀取的文件不適合內存 - 文件被某種二進制跳轉搜索訪問
因此,如果將文件拆分爲邏輯頁面的特定大小,然後我想提供多個緩衝區來表示特定的頁面。這會在讀取文件位置並且相關頁面已經在緩衝區中時提高性能。
對於多個緩衝區,你會期望什麼語義? – 2011-06-09 14:09:19
1)我想指定一個巨大的緩衝區,不想強制系統分配一個這樣的大小。 2)我有多個應用程序經常隨機訪問的大文件。所以,我想讀取和寫入緩衝區以提高性能。 – 0xbadf00d 2011-06-09 14:43:32