तक पहुंचने के बाद रिटर्न -1 निम्नलिखित कोड जीसीसी 4.4 के साथ काम करता है।
लेकिन जीसीसी 4.7 दावा विफलता देगा।जीसीसी 4.7 आईएसट्रीम :: टेलग() ईओएफ
#include <assert.h>
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string input("abcdefg");
stringstream iss(input);
ostringstream oss;
oss << iss.rdbuf();
assert (!iss.eof());
(void) iss.peek();
assert (iss.eof());
// the following assertion will fail with gcc 4.7
assert(streamoff(iss.tellg()) ==
streamoff(input.length()));
return 0;
}
जीसीसी 4.7 में, यदि आईट्रीम ईओएफ तक पहुंच गया है, तो टेलग() वापस आ जाएगा। कोई pubseekoff() न ही seekoff() कहा जाएगा जीसीसी 4.4 में यह कोई समस्या नहीं है।
व्यवहार, जीसीसी 4.4 या जीसीसी 4.7 होना चाहिए? क्यूं कर?
एक छोटी सी उलझन में। निष्कर्षण के बाद 'iss.eof()' सेट क्यों नहीं है? –
यह जीसीसी 4.6 से तय किया गया था, यहां [बग रिपोर्ट है] (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26211)। –
उस बग रिपोर्ट में बहुत अधिक विवरण नहीं है। फ़ाइलों को बदल दिया गया था हालांकि वर्तमान मुद्दे से संबंधित हैं। आपने वर्तमान समस्या के साथ उस बग फिक्स को कैसे जोड़ा? –