有沒有辦法在讀取升壓存檔後檢測升壓存檔內是否有任何內容?我試過這段代碼:如何檢測升壓存檔內是否有任何內容
const string s1("some text");
std::stringstream stream;
boost::archive::polymorphic_text_oarchive oAr(stream);
oAr << s1;
boost::archive::polymorphic_text_iarchive iAr(stream);
string s2;
iAr >> s2;
if (!stream.eof())
{
// There is still something inside the archive
}
我預期的那樣,如果我直接從它讀取流對象進行更新,但是在上面的代碼stream.eof()
總是false
雖然我讀我寫的一切。將字符串更改爲int給出了相同的結果。
我想這纔是對的情況下,當我讀到不是我寫的同種原因:
const string s1("some text");
std::stringstream stream;
boost::archive::polymorphic_text_oarchive oAr(stream);
oAr << s1;
boost::archive::polymorphic_text_iarchive iAr(stream);
int s2;
iAr >> s2; // string was written but int is read
我知道,沒有多少,我可以在這種情況下做的,但我希望在至少檢查一下我讀的所有東西都會給我一些指示,說明讀寫之間是否存在一些不一致。有任何想法嗎?
嘗試:'if(stream.peek(),!stream.eof())'。直到您嘗試閱讀某些內容時,標誌纔會被設置。 – GManNickG 2010-08-30 08:28:46
@GMan,我認爲應該發佈爲答案:) – FireAphis 2010-08-30 09:11:37