预期的输出为“2a3b3c4d3l4z”,但
我正在:12a3b3c4d3l4z。

为什么多余的“1”出现在输出中?

char ipstr[] = "aabbbcccddddzzzzlll";
    cout<<"size of string:"<<sizeof(ipstr)<<endl;
    num = 0;
    map<char, int> ms;
    for(int i = 0; i<sizeof(ipstr);i++){
        if(ipstr[i] == ipstr[i+1])
            num++;
        else{
            ms[ipstr[i]] = num+1;
            num = 0;
        }
    }

    for(auto it = ms.begin();it != ms.end();it++){
        cout<<it->second<<it->first;
    }
    cout<<endl;

最佳答案

多余的1是由于将尾随的{'\0', 1}放入循环而导致的'\0'条目的打印输出。 \0无法打印,因此您只能看到1

09-06 22:20