我在使用gcc4.4的Ubuntu 10.04中遇到了同样的问题,同样的代码在使用gcc4.1的RH5.5上运行良好
#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中更正,不确定未命中行为(除非我遗漏了什么)是否与相同的问题有关。
发布于 2010-08-04 23:41:22
我不知道你为什么期望它失败。sscanf()也不会失败,但会读取数字,并且C++流应该像scanf函数一样工作:
#include <stdio.h>
int main(int argc, char** argv) {
unsigned int n;
if ( ! sscanf( "-1", "%ud", & n ) ) {
printf( "fail\n" );
}
else {
printf( "%ud", n );
}
} 打印4294967295d。
https://stackoverflow.com/questions/3407100
复制相似问题