C++ 循环没有按预期工作:我的解码函数不起作用

问题描述 投票:0回答:1

在 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

我不知道出了什么问题,但它不会工作。

c++ encoding decode encode decoding
1个回答
0
投票
  1. decodedText += test;
    
  2. decodedText += toDecode[i];
    
  3. 使
    encodedText
    本地到
    encode()
  4. 使
    decodedText
    decodeTemp
    本地到
    decode()
    .
© www.soinside.com 2019 - 2024. All rights reserved.