使用C++进行游程编码
run-length encoding using C++
我有一个文本文件,里面有一个我想编码的字符串。
假设它是: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
少于(或等于(一个字符的字符或空白将被打印出来——没有变化。
到目前为止还不错,代码正在运行。。事实上
当我在if
和else
-中使用std::cout
时,它会向我显示如上所述的输出。太完美了。
但是,我想把结果交给参数(std::string &outputstring
(,并在主方法中打印结果。
但它只打印if statement
而不是else statement
。
有人能帮我处理这件事吗?
您的问题是线路outputstring += count;
。将整数分配给字符串时,将其解释为字符代码。您不希望使用具有字符代码计数的字符,但希望将数字计数转换为字符串,因此应该使用outputstring += std::to_string(count);
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 在卡萨布兰卡形成编码参数的列表
- 使用C++进行游程编码
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用已使用 java 编码的 openssl 解码数据
- boost 是否有按特殊类型值编码状态"compact optional"?
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 如何使用 C++将 ISO-2022-KR 编码转换为 UTF-8 编码?
- 绝对编码器十六进制输入
- 防止C++中的硬编码数字
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 使用文件内容作为硬编码字符串
- 运行长度编码程序 c++ 的问题
- 以C++为单位进行运行长度编码
- *新的编码器*格式和运算符
- 在CRC-16 CCITT中将数据从二进制解码为文本,我应该输入一个码字,使用CRC生成器进行编码
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 仅在 zlib c++ 库中强制动态编码