我一直在这工作超过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;
}
任何帮助都会非常感激,这让我很疯狂。
答案 0 :(得分:6)
您的阵列正在默认初始化。类型int
的默认初始化使其“垃圾”。您需要明确地将其初始化为0
:
int mainArray[10] = {0};
答案 1 :(得分:2)
这是因为需要初始化数组。将其添加到您的代码中:
for (int i = 0 ; i != 10 ; i++) {
mainArray[i] = 0;
}
或者,您可以使用memset
:
memset(mainArray, 0, sizeof(mainArray));