У меня есть текстовый файл со строкой, которую я закодировал.
Допустим, это: aaahhhhiii kkkjjhh ikl wwwwwweeeett
Вот код для кодирования, который прекрасно работает:
void Encode(std::string &inputstring, std::string &outputstring)
{
for (int i = 0; i < inputstring.length(); i++) {
int count = 1;
while (inputstring[i] == inputstring[i+1]) {
count++;
i++;
}
if(count <= 1) {
outputstring += inputstring[i];
} else {
outputstring += std::to_string(count);
outputstring += inputstring[i];
}
}
}
Вывод соответствует ожидаемому: 3a4h3i 3k2j2h ikl 6w4e2t
Теперь я хотел бы распаковать вывод - обратно в исходное состояние.
И я борюсь с этим уже пару дней сейчас.
Моя идея на данный момент:
void Decompress(std::string &compressed, std::string &original)
{
char currentChar = 0;
auto n = compressed.length();
for(int i = 0; i < n; i++) {
currentChar = compressed[i++];
if(compressed[i] <= 1) {
original += compressed[i];
} else if (isalpha(currentChar)) {
//
} else {
//
int number = isnumber(currentChar).....
original += number;
}
}
}
Я знаю, что моя функция распаковки кажется немного грязной, но я довольно потерян с этой. Извините за это.
Возможно, есть кто-то в стеке потока, который хотел бы помочь потерянной и начинающей душе.
Спасибо за любую помощь, я ценю это.