使用C++进行游程编码

run-length encoding using C++

本文关键字:游程编码 C++ 使用      更新时间:2023-10-16

我有一个文本文件,里面有一个我想编码的字符串。

假设它是: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) {
//std::cout << inputstring[i] << "";
outputstring += inputstring[i];
outputstring += "";
} else {
//std::cout << inputstring[i] << count;
outputstring += inputstring[i];
outputstring += count;
}
}
}

输出应为:3a4h3i 3k2j2h ikl 6w4e2t

少于(或等于(一个字符的字符或空白将被打印出来——没有变化。

到目前为止还不错,代码正在运行。。事实上

当我在ifelse-中使用std::cout时,它会向我显示如上所述的输出。太完美了。

但是,我想把结果交给参数(std::string &outputstring(,并在主方法中打印结果。

但它只打印if statement而不是else statement

有人能帮我处理这件事吗?

您的问题是线路outputstring += count;。将整数分配给字符串时,将其解释为字符代码。您不希望使用具有字符代码计数的字符,但希望将数字计数转换为字符串,因此应该使用outputstring += std::to_string(count);