#include <iomanip>
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
class STLstring
{
private:
string word;
public:
STLstring()
{
word = "";
}
void setWord(string w);
string getWord();
};
class EncryptString:public STLstring
{
private:
void encrypt();
void decrypt();
};
/*****************IMPLEMENTATION*******************/
void STLstring::setWord(string w)
{
void encrypt();
word = w;
cout << word;
}
string STLstring::getWord()
{
void decrypt();
return word;
}
void EncryptString::encrypt()
{
string temp = getWord();
temp = (temp - 5) %26;
setWord(temp);
}
void EncryptString::decrypt()
{
string temp = getWord();
setWord(temp);
}
int main()
{
string word = "";
EncryptString EncrptStr;
cout << "Enter a word and I will encrypt it so that you cannot read it any longer." << endl;
getline(cin, word);
cout << "\nHere is the encrypted word..." << endl;
EncrptStr.setWord(word);
cout << "\nHere is the decrypted word..." << endl;
cout << EncrptStr.getWord() << endl;
}
中有1个错误
temp = (temp - 5) %26;
错误说:'temp - 5'中的'operator-'不匹配 我想要做的是一个ceasar密码,我知道我还没有完成密码,但我认为即使我完成它仍会出现错误,我是否应该在课堂上制作一个重载操作符?如果是这样的话?我以为重载只是在两个班级之间。
答案 0 :(得分:1)
temp
是string
类型,您正在指定减法。将类型更改为支持减法的类型(如int
)并相应更改逻辑,或者为operator-
和string
实施int
。
答案 1 :(得分:1)
您的变量temp
是一个字符串,字符串没有减法。像"hello" - "world"
这样的陈述没有意义,因此定义一个通常不是一个好主意。
在你的情况下,你甚至试图从一个字符串中减去一个数字(&#34;你好&#34; - 5),这也没有意义。
如果您想计算某些内容,请使用数字类型(例如int
,float
,double
或long
)。
查看您的代码我非常确定您想要计算字符串中单个字符数值的内容,以便加密&#39;他们。为此,您必须使用char对字符串char的字符进行操作。类型char
是数字类型,因此计算'T'-'A'
非常合适,而"T" - "A"
没有意义。