我想将编码后的字符串作为输出。但不能

I want to get the encoded string as output . But not able to

输入:

101101110
1101

预期输出:

000000000011

我的输出:

它只是继续 input.and 不显示任何输出。

请帮帮我。我的代码有什么问题。任何帮助都是 aprreciated.I 给出了变量的名称,这样它很容易 understand.This 代码仅适用于发件人。

 #include <iostream>

using namespace std;

int main()
{
        string input;
        string polynomial;
        string encoded="";
        cin>>input;
        cin>>polynomial;
        int input_len=input.length();
        int poly_len=polynomial.length();
        encoded=encoded+input;
        for(int i=1;i<=poly_len-1;i++){
            encoded=encoded+'0';
        }
        for(int i=0;i<=encoded.length()-poly_len;){
            for(int j=0;j<poly_len;j++){
                if(encoded[i+j]==polynomial[j]){
                    encoded[i+j]=='0';
                }
                else{
                    encoded[i+j]=='1';
                }
            }
            while(i<encoded.length() && encoded[i]!='1'){
                i++;
            }
        }
        cout<<encoded;
    return 0;
}

我给你的建议是熟悉调试。尝试在你的代码中添加一些断点,这样你就可以真正看到后面发生了什么。检查你的代码后,这行似乎给出了一个无限循环 for(int i=0;i<=encoded.length()-poly_len;)。输入您给我们的输入后,条件在任何时候都不会为真。

正确查看这些行:

if (encoded[i + j] == polynomial[j]) {
    encoded[i + j] == '0'; // Line 1
}
else {
    encoded[i + j] == '1'; // Line 2
}

看到了吗?您正在使用 ==,而您应该使用 === 是一个比较运算符,其中 returns 和 boolean (true/false)。它不分配值。因此,要解决您的问题,请将以上行替换为:

if (encoded[i + j] == polynomial[j]) {
    encoded[i + j] = '0'; // Replaced == with =
}
else {
    encoded[i + j] = '1'; // Replaced == with =
}

这应该可以解决您的问题。