C ++ istream readsome(),rdbuf() - > in_avail()在Visual Studio中不起作用?

时间:2014-02-26 06:36:00

标签: c++ visual-studio-2010 visual-c++ istream

我想读取一个文件,但只读取已经读入缓冲区的部分。换句话说,如果可能的话,我不想让磁盘“命中”。例如,如果我有ifstream("filename")我会假设它缓冲前n个字符,并且我应该能够使用readsome()读取这些字符。该函数不起作用,因为in_avail()总是返回0,并且C ++标准说当in_avail()返回0时,readsome()将返回0。

是否有人在Visual Studio(或一般的Windows)中,您是否能够在文件或标准输入或任何类型的流上成功使用readsome()?我在Visual Studio 2010中,无法使用readsome()读取文件。或者我使用它错了?这给了我所有零的输出:

ifstream file("file.txt");
assert(file.is_open());
char buffer[255];
cout << file.readsome(buffer,1) << endl;
cout << file.rdbuf()->in_avail() << endl;
cout << file.gcount() << endl;
cout << endl;

您对如何只读取流的缓冲部分有任何建议吗?是否有一种可移植的方法来获取缓冲区大小,然后只读取使用read()?

0 个答案:

没有答案