2
我有在Ubuntu 10.04同一问题使用GCC4.4,同样的代码工作在RH 5.5 细使用gcc4.1stringstream在无符号类型中失败“流”负值?
#include <sstream>
#include <iostream>
int main(int argc, char** argv) {
std::stringstream myStream;
myStream << "-123";
unsigned int myUInt;
myStream >> myUInt;
if(myStream.fail()) {
std::cout << "FAILED" << std::endl;
}
}
不给失败了,我已经发现了这一点:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39802
它说,它在gcc4.1纠正,不 肯定的,如果小姐的行为(除非我失去了一些东西) 涉及同样的问题。
因为在RH5.4上有4.1编译器会失败。此外,我不确定stringstream必须像scanf那样行事。更不用说boost :: lexical_cast依赖于它必须失败的事实,事实上我发现stringstream没有失败,因为boost :: lexical_cast(“ - 123”)不是抛出。 您发布的链接最后说明它将被修复为4.4.1,但实际上代码失败,并且4.4.3 –
2010-08-04 15:48:24
@kalman是的,那就是错误!它在4.1,并在稍后修复。另外,你可以从另一个问题看到,关于什么是“正确的”行为存在一些争论。 – 2010-08-04 15:50:14
所以,你的意思是串流在无符号类型流中失败“-123”,这是一个错误,而不是一个功能? – 2010-08-04 15:55:27