我的程序将加密的字符串转换为类函数EncryptedString(string str)。似乎一切都正确输出,除了当我尝试调用get函数来获取解密的字符串时,我遇到了“ZZZZZZZZ”。程序采用短语或句子,加密句子并删除任何非法字符,然后解密并输出解密结果。我正在加入“Hello World!”它删除了!正好。这个空间应该保留,但它也变成了Z.
我的加密输出也有问题。我也输出短语的加密版本。但是当我输出它时,没有任何东西被推出。
这是整个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;
}
问题是您使用错误的运算符进行相等比较:
if (enCry[i] = chBase + 25)
在C ++中,您使用==
来比较相等,而不是=
。以上行应该是:
if (enCry[i] == chBase + 25)
您在程序中的其他几行中出现类似错误。纠正这些错误并重新运行程序。