string str1=”“;
第15行:char(str1[i]) 其中char()函数需要的参数需要常量表达式,一般是int整数表达式,unicode编码或者ascii编码(主要为ASCII码)。
显然str1[i]不是。
【以下回答由 GPT 生成】
问题出错的地方是你没有正确处理输入字符串str1中的空格。空格在解密过程中应该保留不变,而不需要进行任何加密或解密操作。 为了解决这个问题,你可以在解密函数中增加对空格的处理逻辑,使其在解密过程中保持不变。 下面是一个修改后的解密函数的示例代码:
#include <iostream>
#include <string>
std::string decryptString(const std::string& encrypted) {
std::string decrypted;
for (int i = encrypted.length() - 1; i >= 0; i--) {
if (encrypted[i] == ' ') {
decrypted += ' ';
} else {
char c = encrypted[i] - 3;
if (c < 'a') {
c += 26;
}
decrypted += std::toupper(c);
}
}
return decrypted;
}
int main() {
std::string str1;
std::cout << "请输入要解密的字符串: ";
std::getline(std::cin, str1);
std::string decrypted = decryptString(str1);
std::cout << "解密结果为: " << decrypted << std::endl;
return 0;
}
以上代码中,我增加了一个判断语句来处理空格。当遇到空格时,直接将其添加到解密结果中,不做任何加密或解密操作。 这样修改后,你就可以正确处理包含空格的输入字符串了。
【相关推荐】