尝试从Visual Studios C ++中的加密字符串输出解密的字符串时发生逻辑错误

时间:2018-09-08 05:54:44

标签: c++ visual-studio encryption visual-c++ logic

我的程序将加密的字符串带入类函数EncryptedString(string str)。除了我尝试调用get函数以获取“ ZZZZZZZZ”遇到的解密字符串外,似乎所有内容均正确输出。本程序采用短语或句子,对句子进行加密并删除任何非法字符,然后将其解密并输出解密结果。我要输入“ Hello World!”并删除!正好。应该保留该空间,但是它也将变成Z。

  • 输入:Hello World!
  • 预期结果:Hello World
  • 输出:ZZZZZZZZZZZZZ

我的加密输出也有问题。我还要输出该短语的加密版本。但是,当我输出它时,什么也没有输出。

  • 输入:Hello World!
  • 预期结果:Ifmmp Xpsme
  • 输出为空白。

这是整个EncryptedString.cpp文件的代码。谢谢任何帮助我解决此问题的人,如果您需要查看main.cpp文件或该文件的头文件声明了我乐意提供的功能,那只是我认为它们对于此错误不是必需的。但是我可能是错的。

#include "EncryptedString.h"


string decrypted;

EncryptedString::EncryptedString(string str)
{
    string enCrypt = str;
    set(enCrypt);

}



void EncryptedString::set(string str)
{
    char chBase = 'A';


    string enCry = str;
    for (int i = 0; i < enCry.length(); i++)
    {
        char ch = enCry[i];

        if ((enCry[i] < chBase || (enCry[i] > chBase + 25 && enCry[i] <  tolower(chBase)) || enCry[i] > tolower(chBase + 25)) && enCry[i] != ' ')
        {
            enCry.erase(enCry.begin() + i);
        }
        else
        {
            if (enCry[i] = chBase + 25)
            {
                enCry[i] = 'A';
            }
            else if (enCry[i] = tolower(chBase) + 25)
            {
                enCry[i] = 'a';
            }
            else if (enCry[i] = ' ')
            {
                enCry[i] = ' ';
            }
            else
            {
                enCry[i] = ch + 1;
            }

        }


    }

    EncryptedString::encryption == enCry;
    string decrypt = enCry;

    for (int i = 0; i < decrypt.length(); i++)
    {
        char ch = decrypt[i];

        if (decrypt[i] = 'A')
        {
            decrypt[i] = 'Z';
        }
        else if (decrypt[i] = 'a')
        {
            decrypt[i] = 'z';
        }
        else if (decrypt[i] = ' ')
        {
            decrypt[i] = ' ';
        }
        else
        {
            decrypt[i] = ch - 1;
        }
    }

    decrypted = decrypt;
}

const string EncryptedString::get()
{

    return decrypted;
}

const string EncryptedString::getEncrypted()
{
    return EncryptedString::encryption;
}

1 个答案:

答案 0 :(得分:1)

问题在于您使用错误的运算符进行相等比较:

if (enCry[i] = chBase + 25)

在C ++中,您使用==进行相等性比较,而不是=。上一行应为:

if (enCry[i] == chBase + 25)

您在程序的其他几行中犯了类似的错误。更正这些错误并重新运行程序。