gpt4 book ai didi

c++ - Caesar Cipher函数替代C++

转载 作者:行者123 更新时间:2023-11-28 06:03:58 25 4
gpt4 key购买 nike

您好,我正在研究这个 Caesar 密码解密器,它采用加密字符串并使用所有 key 对其进行解密(如果它们与另一条消息相似,则另一个函数将匹配它们)。我有 Decipher 函数,但我只是想知道是否有任何其他方法可以编写该函数。任何想法将不胜感激。谢谢!

void Decipher(char cip[], char key){

for(int i = 0; cip[i] != '\0'; i++){
if(cip[i] == ' '){
cip[i]= cip[i];

}else if(int(cip[i] >= int(key){
cip[i] = char(int(cip[i]) - ((int(key) - 65) % 26));

}else{
cip[i] = char(26 + int(cip[i]) - ((int(key)-65) % 26);
}

}

}

最佳答案

总有另一种方式。通常还有六种方法。首先,我会将执行解密的部分移到一个单独的函数中。

char decipher(char in, char key) { 
// ..
return in;
}

然后考虑到您代码中的共性数量,我会尝试至少删除一些重复:

char decipher(char in, char key) {
if (in != ' ') {
in = char(in - ((key - 'A') % 26));
if (in < 0)
in += 26;
}
return in;
}

这给我们留下了遍历字符串并解密每个元素的外部例程。我可能会为此使用标准算法并引用 std::string 作为参数):

void decipher(std::string &s, char key) { 
std::transform(s.begin(), s.end(), s.begin(),
[key](char c) { return decipher(c, key); });
}

或者,您可以使用基于范围的 for 循环代替 transform:

for (auto &c : s) 
c = decipher(c, key);

关于c++ - Caesar Cipher函数替代C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32751727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com