Вы оценили длину строки, включая символ '\ 0' (может быть неоднозначно, что строка заканчивается этим).Затем в цикле вы добавили '\ 0' на карту.Но что значит печатать нулевой символ.Вот почему у вас есть 1 и пробел в начале.
char ipstr[] = "aabbbcccddddzzzzlll";
int n = strlen(ipstr);
cout << "size of string:" << n << endl;
int num = 0;
map<char, int> ms;
for (int i = 0; i < n - 1; 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;