请各位看看问题出在哪里啊

img


为什么这里str1有问题啊,str1是需要键盘输入的啊,是哪里有问题吗

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;
}

以上代码中,我增加了一个判断语句来处理空格。当遇到空格时,直接将其添加到解密结果中,不做任何加密或解密操作。 这样修改后,你就可以正确处理包含空格的输入字符串了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^