首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stringstream无法在无符号类型中“流式处理”负值?

stringstream无法在无符号类型中“流式处理”负值?
EN

Stack Overflow用户
提问于 2010-08-04 23:27:20
回答 1查看 2.4K关注 0票数 2

我在使用gcc4.4的Ubuntu 10.04中遇到了同样的问题,同样的代码在使用gcc4.1的RH5.5上运行良好

代码语言:javascript
复制
#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中更正,不确定未命中行为(除非我遗漏了什么)是否与相同的问题有关。

EN

回答 1

Stack Overflow用户

发布于 2010-08-04 23:41:22

我不知道你为什么期望它失败。sscanf()也不会失败,但会读取数字,并且C++流应该像scanf函数一样工作:

代码语言:javascript
复制
#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。

另请参阅stringstream unsigned conversion broken?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3407100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档