gpt4 book ai didi

如果旋转是特定字符,C++ 插入符号

转载 作者:行者123 更新时间:2023-11-28 04:03:08 24 4
gpt4 key购买 nike

我正在尝试解密/加密,如果上述旋转会导致一些特定字符,我想插入字符。我有一个名为 CHARS ="ABCXYZabcxyz"的常量字符串。我目前的加密字符串是“eDhrS3S0/”。

我正在使用 ASCII 旋转 4,如果当前字符串字符是“CHAR”中的我的字符之一,我想在所述字符之前和之后添加/,但我无法让它工作,这是我的代码目前为此。

const string CHARS="ABCXYZabcxyz";
string crypt = "eDhrS3S0/", encrypted;
string cryptTemp = crypt;

for (int i=0; i<cryptTemp.length(); i++){
for (int j=0; j<CHARS.length(); j++){
if (((int)crypt[i]-4) == (int)CHARS[j]){
crypt.insert(crypt[i],"0",-1);
crypt.insert(crypt[i],CHARS[j], 0);
crypt.insert(crypt[i],"0",+1);
}
}
}

如果字符在没有旋转的情况下与字符匹配,我设法替换字符,但是一旦我在 if 语句中添加“-5”,什么也没有发生,我真的被困在了这一点上。从字符串“e”中删除 4 后,字符串“e”中的第一个字符应转换为“a”,但我无法使其正常工作。

最佳答案

添加一些关注点分离将使您的代码更清晰:

  • rot4 代码提取到一个单独的函数中。
  • 显式调用此函数并将结果赋给c
  • 使用 std::string#find 而不是循环。
  • 累加 ret 中的所有字符并返回。
char rot4(char c) {
bool wasupper = isupper(c);
c = tolower(c);
int value = int(c - 'a') - 4;
if (value < 0) value += 26;
c = value + (wasupper ? 'A' : 'a');
return c;
}

string decrypt(string crypt) {
string ret;

for (int i=0; i<crypt.length(); i++){
char c = rot4(crypt[i]);
if (CHARS.find(c) != string::npos) {
ret += '/';
ret += c;
ret += '/';
} else {
ret += c;
}
}
return ret;
}

至于您原来的问题,我很确定您使用了错误的 std::string#insert 重载。

关于如果旋转是特定字符,C++ 插入符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59174050/

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