Вы можете использовать ios::rdbuf()
, чтобы получить указатель на streambuf
объект. Этот объект представляет внутренний буфер для потока.
Вы можете вызвать streambuf::pubsetbuf(char * s, streamsize n)
, чтобы установить новый внутренний буфер с заданным размером.
См. эту ссылку для более подробной информации.
edit: Вот как это будет выглядеть в вашем случае:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argCount, char ** argList[])
{
ifstream inStream(argList[1]);
char myBuffer [512];
inStream.rdbuf()->pubsetbuf(myBuffer, sizeof(myBuffer));
char ch;
while(inStream.read(&ch, 1))
{
cout << ch;
}
}
edit: , на что указывает litb , фактическое поведение streambuf::pubsetbuf
"определяется реализацией".
Если вы действительно хотите поэкспериментировать с буферами, вам, возможно, придется свернуть свой собственный класс буферизации, который наследуется от streambuf
.