0

我已经为此工作了2个多小时。我已将我的问题隔离为一段代码。

问题出在我的阵列上。它正在输出非常大的负值。我输入数组的值是正确的。我对 java 有经验,但这是我的第一个 C++ 程序。

   #include <cstdlib>
   #include <iostream>
   #include <sstream>
   #include <string>

   using namespace std;

   int main(){
    string inputString;
    cin >> inputString;
    cout << inputString << endl;

    int mainArray[10];

    for(int x = 0; x < inputString.length(); x++){
        int valFound = inputString[x]-48; //minus 48 to change from ascii to int
        mainArray[valFound]++;
        cout << mainArray[valFound];
    }

    return 0;
    }

任何帮助将不胜感激,这让我发疯。

4

2 回答 2

6

您的数组正在默认初始化。类型的默认初始化int使其“带有垃圾”。您需要将其初始化为0显式:

int mainArray[10] = {0};
于 2013-03-29T23:43:47.650 回答
2

这是因为数组需要初始化。将此添加到您的代码中:

for (int i = 0 ; i != 10 ; i++) {
    mainArray[i] = 0;
}

或者,您可以使用memset

memset(mainArray, 0, sizeof(mainArray));
于 2013-03-29T23:43:48.577 回答