0

メソッドをstd::fstream使用して終了するために読んだ後、開始することはできません( -1を返します)。閉じて再度開かずに再利用する方法はありますか?readseekgtellgstd::fstream

if (!stream->is_open();)
{
    throw "stream is closed";
}
stream->seekg(0, stream->end);
std::fstream::pos_type lenght = stream->tellg();
stream->seekg(0, stream->beg);

if (0 != stream->tellg())
{
    throw "could not set seek to beginig";
}

char* buffer = new char[lenght];


stream->read(buffer, lenght);

*data = buffer;
return lenght;

1回目の実行はOKを返します。2ランスロー(シーク不可)。

4

1 に答える 1

2

ストリームが失敗モードになると (つまり、設定されると)、このフラグがedstd::ios_base::failbitになるまで、ストリームは何の役にも立たなくなります。clear()おそらく使用するのに十分です

stream->clear();
于 2013-10-06T13:06:06.163 に答える