添加字符串而不使用内置库函数,我做错了什么?

吉里贾拉姆

如果我尝试将两个字符串 x 和 y 与值“0”“1”相加,则此函数的 resultnum 值为“01”。如果我尝试使用 resultnum.find_first_of("0") 它返回位置为 -1 而不是 0 .... 我只想摆脱那个前导零,我无法摆脱它......也许我是犯了一些愚蠢的错误,但请帮助我确定为什么结果为 0 的位置返回 -1。

string addStrings(string num1, string num2) {

    char carry = {0},x={0},y={0},z={0};
    std::string resultnum;

    long loopUnitl=std::max(num1.size(),num2.size());
    long maxSize = loopUnitl+1;
    resultnum.reserve(maxSize);
    std::string::reverse_iterator rnum1_it=num1.rbegin();
    std::string::reverse_iterator rnum2_it=num2.rbegin();

   while(loopUnitl) 
   {

        if(rnum1_it != num1.rend())
        {
            x = *rnum1_it;
            rnum1_it++;
        }
        else
        {
            x = '0';                
        }
        if(rnum2_it != num2.rend())
        { 
            y = *rnum2_it;
            rnum2_it++;
        }
        else
            y = '0';

        z = (x -'0') + (y - '0') + carry;

       if (z > 9) 
        {

            carry = 1; 
            z -= 10;
        }
        else
        {
            carry = 0; //Else no carry was generated               
        }

        resultnum[loopUnitl] = (z+'0');
        loopUnitl=loopUnitl-1;
       if(loopUnitl==0)  
       {              
          resultnum[loopUnitl] = carry+'0';
          resultnum[maxSize]='\0';

       }

}
     return resultnum;
}
雷米勒博

您需要使用resultnum.resize()而不是resultnum.reserve().

您使用operator[]将字符插入resultnum未定义行为,因为访问字符的有效范围是[0, size()),不是[0, capacity())(如果您使用该at()方法而不是operator[],您的代码会引发异常警告您索引超出范围)。

或者,如果您想继续使用reserve(),您应该使用insert()方法在每次循环迭代时将字符添加到字符串的前面,而不是使用operator[]

字符串的size()capacity()是两个不同的东西。capacity()是字符串物理分配了多少内存来保存字符,但size()这些字符中有多少是实际有效的数据。像搜索这样的操作作用于size(),而不是capacity()

由于字符串size()永远不会 > 0,这就是find_first_of()返回 -1 的原因

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不使用任何内置php函数的情况下搜索字符串中的连续重复字符?

来自分类Dev

我究竟做错了什么?使用lxml解析HTML

来自分类Dev

在不使用字符串库函数的情况下替换C中的子字符串

来自分类Dev

删除字符串中的元音。我究竟做错了什么?

来自分类Dev

将字符串中的第一个字母大写。我究竟做错了什么?

来自分类Dev

在不使用内置函数的情况下反转字符串JS中的单词

来自分类Dev

我用这种方法做错了什么?(使用StringBuilder从4个字符串中创建一个新单词)

来自分类Dev

在不使用库函数的情况下在字符串中查找子字符串

来自分类Dev

字符串日期后的日期计算未按预期进行。我究竟做错了什么?

来自分类Dev

在不使用任何库函数的情况下反转字符串

来自分类Dev

我正在尝试使用while循环从字符串中删除字母,直到没有剩下的为止。我在这里做错了什么?

来自分类Dev

为什么某些C字符串库函数(即strtok)不接受尚未使用malloc分配的char *?

来自分类Dev

在不使用C#中内置函数的情况下计算字符串长度

来自分类Dev

在不使用字符串库函数的情况下替换C中的子字符串

来自分类Dev

我正在使用VBA DateSerial函数来分隔字符串中的日期,但是当字符串中的年份为'1000'时,Excel Ends Sub会出现。我究竟做错了什么?

来自分类Dev

将字符串存储在C的char数组中-我做错了什么?

来自分类Dev

在不使用库函数的情况下在字符串中查找子字符串

来自分类Dev

我对该函数及其调用的方法做错了什么?

来自分类Dev

在不使用内置字符串函数的情况下提取字符之间的单词

来自分类Dev

我在这个使用函数的 Python 程序中做错了什么?

来自分类Dev

我想在不使用内置函数的情况下反转 javascript 中的字符串

来自分类Dev

我在这个类构造函数上做错了什么?

来自分类Dev

我对 mxGetPr 做错了什么

来自分类Dev

我对 sorted() 函数做错了什么?

来自分类Dev

我正在尝试使用聚合函数来合并数据,但我不确定我做错了什么

来自分类Dev

我在使用 USerDefault 保存数据时做错了什么

来自分类Dev

我在使用 JSON 解码器时做错了什么

来自分类Dev

在java脚本中将字符串转换为整数而不使用任何内置函数

来自分类Dev

¿我做错了什么?

Related 相关文章

  1. 1

    如何在不使用任何内置php函数的情况下搜索字符串中的连续重复字符?

  2. 2

    我究竟做错了什么?使用lxml解析HTML

  3. 3

    在不使用字符串库函数的情况下替换C中的子字符串

  4. 4

    删除字符串中的元音。我究竟做错了什么?

  5. 5

    将字符串中的第一个字母大写。我究竟做错了什么?

  6. 6

    在不使用内置函数的情况下反转字符串JS中的单词

  7. 7

    我用这种方法做错了什么?(使用StringBuilder从4个字符串中创建一个新单词)

  8. 8

    在不使用库函数的情况下在字符串中查找子字符串

  9. 9

    字符串日期后的日期计算未按预期进行。我究竟做错了什么?

  10. 10

    在不使用任何库函数的情况下反转字符串

  11. 11

    我正在尝试使用while循环从字符串中删除字母,直到没有剩下的为止。我在这里做错了什么?

  12. 12

    为什么某些C字符串库函数(即strtok)不接受尚未使用malloc分配的char *?

  13. 13

    在不使用C#中内置函数的情况下计算字符串长度

  14. 14

    在不使用字符串库函数的情况下替换C中的子字符串

  15. 15

    我正在使用VBA DateSerial函数来分隔字符串中的日期,但是当字符串中的年份为'1000'时,Excel Ends Sub会出现。我究竟做错了什么?

  16. 16

    将字符串存储在C的char数组中-我做错了什么?

  17. 17

    在不使用库函数的情况下在字符串中查找子字符串

  18. 18

    我对该函数及其调用的方法做错了什么?

  19. 19

    在不使用内置字符串函数的情况下提取字符之间的单词

  20. 20

    我在这个使用函数的 Python 程序中做错了什么?

  21. 21

    我想在不使用内置函数的情况下反转 javascript 中的字符串

  22. 22

    我在这个类构造函数上做错了什么?

  23. 23

    我对 mxGetPr 做错了什么

  24. 24

    我对 sorted() 函数做错了什么?

  25. 25

    我正在尝试使用聚合函数来合并数据,但我不确定我做错了什么

  26. 26

    我在使用 USerDefault 保存数据时做错了什么

  27. 27

    我在使用 JSON 解码器时做错了什么

  28. 28

    在java脚本中将字符串转换为整数而不使用任何内置函数

  29. 29

    ¿我做错了什么?

热门标签

归档