Я написал небольшую программу для кодирования длины пробега.Почему эта функция печатает x вместо 1?
void runLengthEncoding (string& str)
{
int k=0;
int count =1;
for (unsigned i=1, count=1; i<str.size(); ++i)
{
if (str[i] == str[k])
{
count +=1;
}
else
{
str[++k] = count+'0';
str[++k] = str[i];
count = 1;
}
}
str[++k] = count + '0';
str.resize(k);
}
Когда я вызываю эту функцию с помощью
string s = "wwwwaaadexxxxxx";
runLengthEncoding (s);
cout << endl << s;
Это печать - "w4a3d1e1x"
Он должен печатать - "w4a3d1e1x6"
Мои сомнения, почему он не печатает последний отсчет?
Я не понять свои сомнения. – vipw
Запуск под отладчиком, запуск в точке останова до последнего цикла, одношаговый, просмотр того, что происходит. –
'Он должен печатать "w4a3d1e11"' - нет, не должен ли он печатать "w4a3d1e1x6"? – Constantin