以下代码适用于 gcc 4.4。
但是 gcc 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;
}
在 gcc 4.7 中,如果 istream 已达到 EOF,tellg() 将返回 -1。不会调用 pubseekoff() 或 seekoff() 在 gcc 4.4 中这不是问题。
哪个应该是行为,gcc 4.4 或 gcc 4.7?为什么?