在字符串上迭代并填充C 中的数组

Iterate over a string and fill an array in C++

本文关键字:数组 填充 字符串 迭代      更新时间:2023-10-16

我正在处理此代码,该代码在这种情况下实际上是代表整数的字符串 - 并填充一个字符串的每个"数字"的数组。因此,字符串"350"将导致具有元素{3,5,0}的数组。这是代码:

    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    int main() {
      int arr[5];
        string test = "10000";
      for(unsigned int i = 0; i<test.length(); i++) {
        char c = test[i]; 
        cout << c << endl;
        arr[i] = c;
    }
    //printing the array for testing
    for (int i = 5 - 1; i >= 0; i--) 
        cout << arr[i];
        return 0;
    }
     char c = test[i]; 
            arr[i] = c;
        }
            return 0;
    }

问题是由此产生的数组是{49,48,48,48,48}。我不知道为什么它这样做以及我在何处出现了代码。为什么要添加数字49和48,我该如何修复?

另外,如果它有助于任何人,以下是指向通过代码运行的步进的链接:http://pythontutor.com/visualize.html#code=#Include #include >>PAILSINPAILE%0A%0A%0AINT%20main%28%29%20%7b%0a%20%20%20 ard%5B5%5D%3b%0A%09%20 string%20 -Stest%20%20%3D%20%20%2210000%22%22%22%22%22%22%%20%20 for%28签名%20INT%20I%20%20%3D%200%3b%20I%3ctest.LENGTEM%28%29%3b%20I%2B%2B%2B%29%20%20%7B%20%20%20%20%20%20%20CHAR 20%20%3D%20 -test%5B%5D%3B%20//this%20IS%20 Your%20 character%0A%20%20%20%20%20%20ARR 5B%5D%20%20%3D%20C%20C%20C%3B%0A%7D%0A%09逆转%200%3B%0A%7D%0A%0A%0A%0a&amp;累积= false&amp; curinstr = 19&amp; amp; heapprimitives = false&amp; mode = display = display&amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp》rawinputlstjson =%5b%5D&amp; textreferences = false

您在数组中看到的是插入字符的ASCII。这是您应该采取的措施将角色转换为整数: arr[i] = atoi(&c);

48和49是您在ASCII中的0和1。您需要从ASCII转换为数字。

您创建了arr作为整数数组,因此,通过将字符元素分配给它,您将它们隐式地投入到整数中。当您执行此操作时,字符的ASCII值将被打印,而不是字符本身。您应该使用一系列字符。

char arr[5];