首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++排序负输出

C++排序负输出
EN

Stack Overflow用户
提问于 2013-09-27 16:07:22
回答 1查看 261关注 0票数 1

嗨,有人能告诉我这段代码出了什么问题吗?

代码语言:javascript
复制
#include <stdio.h>
int convstrg(char* str) {
   int output = 0;
   char* p = str;
   for (int i=0;str[i]!='\0';i++) {
      char c = *p++;
      if (c < '0' || c > '9')
        continue;
      output *= 10;
      output += c - '0';
   }   
   return output;
}

int main(){
    char x[] = "1xx23";
    printf("%d\n", convstrg(x));
    return 0;
}

当输出是字符串整型时,代码应该返回一个整型。但是我似乎得到了像0这样奇怪的数字。

这是几个测试用例,有些能用,有些不能用

代码语言:javascript
复制
"123" -> 123
"23xyz" -> 23
"" -> 0
"abc" -> 0
"-1" -> -1

谢谢

编辑

好的,现在我整理出除了负字符串之外的所有情况。

EN

回答 1

Stack Overflow用户

发布于 2013-09-27 16:14:49

  • ,你永远不会检查前导字符是否为-,因此你不能期望得到正确的负数解析。您应该打破 if (c < '0' || c > '9')而不是continue。否则,从12xyz123中解析出来的值将会非常奇怪,

  • ,我希望你知道,有一些内置的函数可以从字符串中解析出整数,比如使用std::atoi或者std::stringstream。查看here以了解更多详细信息。
  • 您也可以像这样使用像boost::lexical_cast这样的第三方库。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19045813

复制
相关文章

相似问题

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