我正在编写一个具有4种不同功能的程序,其中一个询问用户是否要进行编码/解码,另一个询问用户在动态内存中输入字符串,实际的解密功能以及输出功能。我做了所有事情,但是我唯一的问题是考虑输入的单词中是否有空格。
在解密函数中,我写道,如果给定单词的索引有空格,则它将继续并跳过该索引。编辑:我现在包括了输入功能和输出功能,可以读取单词并对其进行加密。
string *input(){
string *temp = new string;
cout<<"What is the word: ";
getline(cin, *temp);
cin >> *temp;
return temp;
}
string output(string *in){
string cypher;
cypher = decryption(*in);
cout<<"Result: "<<cypher<<endl;
return cypher;
}
string decryption(string in){
int inputSize = in.size();
int index = 0;
while(index != inputSize){
if(in[index] == ' '){//possibly something wrong with this if statement
index++;
}else if(in[index] >= 97 && in[index] <= 109){
in[index]= in[index]+13;
}else if(in[index] >=110 && in[index] <=122){
in[index] = in[index]-13;
}else if(in[index] >=65 && in[index] <=77){
in[index] = in[index]+13;
}else if(in[index] >=78 && in[index] <=90){
in[index] = in[index]-13;
}
index++;
}
return in;
}
预期结果: 输入“ e”或“ d”进行编码或解码。要退出的其他键:e 单词是什么:字母 结果:nycunorg
输入'e'或'd'进行编码或解码。要退出的其他键:e 单词是什么:TAF VF 结果:GNS是
到目前为止,我的结果是: 输入“ e”或“ d”进行编码或解码。要退出的其他键:e 单词是什么:TAF VF 结果:GNS
答案 0 :(得分:3)
遇到空格时,您可以有效地递增index
两次-一次在该if
子句中,再一次在循环结束时。这样做的最终效果是跳过(保留未编码的字符)空格后的字符。
只需删除整个if(in[index] == ' ')
子句。其余代码已经使不属于四个特别检查范围(包括空格)的所有字符保持不变。