【发布时间】:2011-05-04 10:56:23
【问题描述】:
这是我迄今为止尝试过的,但没有成功:
std::string ReadPartial( std::ifstream& _file, int _size )
{
std::istreambuf_iterator<char> first( _file );
std::istreambuf_iterator<char> last( _file );
std::advance( last, _size );
return std::string( first, last );
}
我知道如何阅读整个文件。
std::string Read( std::ifstream& _file )
{
std::istreambuf_iterator<char> first( _file );
std::istreambuf_iterator<char> last();
return std::string( first, last );
}
但这不是我想做的。我得到一个空字符串。如果我在调试器中查看第一个和最后一个,即使在 std::advance 之后,它们也会指向相同的东西。
【问题讨论】:
-
您看到的实际结果是什么?另外,请发布您使用的真实代码。上面的代码甚至没有编译(编辑:在查尔斯修复它之前......)。
-
好的,修复了编译错误。对不起,这是我的错。在我的脑海中打字。
-
不用HTML,markdown效果很好。
-
根据习惯,我在回答中将 ifstream 更改为 istream,但应该明确指出:如果您不需要文件,则将文件流作为 istream 或 ostream(或者,很少使用 iostream)传递- 特定方法(打开、关闭等)。