在 C++ 中,我想制作一个像这样的编码和解码函数:
“AB”编码为 65S66S。编码功能按预期工作,但解码功能效果不佳。
我试过:
#include <iostream>
#include <string>
using namespace std;
string encodedText;
string decodeTemp;
string decodedText;
string encode (string toEncode)
{
for (int i = 0; i < toEncode.length(); i++)
{
for (int j = 10; j < 126; j++)
{
char test = j;
if (test == toEncode[i])
{
encodedText += to_string(j) + 'S';
break;
};
};
};
return encodedText;
};
string decode (string toDecode)
{
for (int i = 0; i < toDecode.length(); i++)
{
if (toDecode[i] == 'S') {
char test = stoi(decodeTemp);
decodedText += to_string(test);
decodeTemp = "";
continue;
} else { decodeTemp += to_string(toDecode[i]); };
};
/*
Comment to try to fix it:
encodedtext = 65S66S
6 != S, decodeTemp = 6
5 != S, decodeTemp = 65
S == S, decodedText = A
6 != S, decodeTemp = 6
6 != S, decodeTemp = 66
S == S. decodedText = B
*/
return decodedText;
};
int main ()
{
string myString = "AB";
cout << "Encoded: " << encode(myString) << endl;
cout << "Decoded: " << decode(encode(myString));
return 0;
};
我预计:
Encoded: 65S66S
Decoded: AB
我得到:
Encoded: 65S66S
Decoded: 778778
我不知道出了什么问题,但它不会工作。
decodedText += test;
decodedText += toDecode[i];
encodedText
本地到encode()
decodedText
和decodeTemp
本地到decode()
.