预期的输出为“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
。