我的程序计算字符串中每个数字从0到9的出现次数。在我看来,我已经完成了所有事情,但问题仍然存在。
int main(){
string word = "23456745";
int* ReturnArray = count(word);
for(int i =0; i < 10; i++){
cout << i << ": " << ReturnArray[i] << " \n";
}
delete [] ReturnArray;
return 0;
}
int* count(const string& s){
int length = s.length();
int* array = new int(10);
int counter =0;
for(int j = 0 ; j < 10 ; j++) {
for(int i = 0 ; i < length ; i++) {
char character = s[i];
int value = static_cast<int>(character -'0');
if(value == j)
counter++;
}
array[j] = counter;
counter = 0;
}
return array;
}
答案 0 :(得分:6)
int* array = new int(10);
这会创建一个值为10的int ...对于您希望[10]
而不是(10)
的10个整数。那我建议你加入......
std::cerr << "j " << j << '\n'; // add some trace
array[j] = counter;
...并学会调试。
当你使用它时,重写它以使用std::vector
- 它是一种更安全,更强大的方法。