C+有问题+;相关问题 我编写了一个C++程序,它是一个维吉尼亚密码,但我碰到了几个C++问题。一个是程序加密,但它不解密它的加密。另一个问题是最后一个for循环是如何工作的,它似乎不能正常工作。第三个问题是C++没有在我键入空间的地方添加空间。而且它只打印出一封信。我不喜欢C++,因为我对它很陌生。 #include <iostream> using namespace std; int main() { string Message; //What The User Inputs string Key; // What Key To Go By string Encryption; // The Secret cout << "\n\nEnter Your Message: "; getline(cin, Message); cout << "\nEnter The Main Key: "; getline(cin, Key); cout << "\n\n"<<endl; for (int i=0; i<=Message.size(); i++) //letter i is less than the length of the message { int k=0; Encryption[i] = (( (Message[i]-97) + (Key[k]-97)) %26) + 97; //The Algorithm k++; if ( k==Key.size() ) { k=0; } } for (int i=0; i<=Message.size(); i++) { string Result; Result = Encryption[i]; if ( i == Message.size() ) { cout <<"Encryption: "<< Result <<endl; cout << "\n\n"<<endl; } } return 0; } /* INPUT: Enter Your Message: Hello There Enter The Main Key: Secret OUTPUT: Encryption: Z */ #包括 使用名称空间std; int main() { 字符串消息;//用户输入的内容 字符串键;//使用什么键 字符串加密;//秘密 cout

C+有问题+;相关问题 我编写了一个C++程序,它是一个维吉尼亚密码,但我碰到了几个C++问题。一个是程序加密,但它不解密它的加密。另一个问题是最后一个for循环是如何工作的,它似乎不能正常工作。第三个问题是C++没有在我键入空间的地方添加空间。而且它只打印出一封信。我不喜欢C++,因为我对它很陌生。 #include <iostream> using namespace std; int main() { string Message; //What The User Inputs string Key; // What Key To Go By string Encryption; // The Secret cout << "\n\nEnter Your Message: "; getline(cin, Message); cout << "\nEnter The Main Key: "; getline(cin, Key); cout << "\n\n"<<endl; for (int i=0; i<=Message.size(); i++) //letter i is less than the length of the message { int k=0; Encryption[i] = (( (Message[i]-97) + (Key[k]-97)) %26) + 97; //The Algorithm k++; if ( k==Key.size() ) { k=0; } } for (int i=0; i<=Message.size(); i++) { string Result; Result = Encryption[i]; if ( i == Message.size() ) { cout <<"Encryption: "<< Result <<endl; cout << "\n\n"<<endl; } } return 0; } /* INPUT: Enter Your Message: Hello There Enter The Main Key: Secret OUTPUT: Encryption: Z */ #包括 使用名称空间std; int main() { 字符串消息;//用户输入的内容 字符串键;//使用什么键 字符串加密;//秘密 cout,c++,encryption,C++,Encryption,第1点:程序不会解密加密的消息 当然没有。该程序不包含任何可以解密加密消息的代码。我无法在第1点上提供帮助 第2点:的最后一个循环不起作用 打印加密消息不需要循环 cout << "Encryption: " << Encryption<< endl; cout << "\n\n" << endl; 将Result设置为字符串Encryption中的第i个字符。结果现在只包含一个字符 if ( i == Message.si

第1点:程序不会解密加密的消息

当然没有。该程序不包含任何可以解密加密消息的代码。我无法在第1点上提供帮助

第2点:的最后一个
循环不起作用

打印加密消息不需要循环

cout << "Encryption: " << Encryption<< endl;
cout << "\n\n" << endl; 
Result
设置为字符串
Encryption
中的第i个字符。结果现在只包含一个字符

    if ( i == Message.size() )
    {
如果
i
已达到消息长度

        cout <<"Encryption: "<< Result <<endl;  
此外:

string Encryption;
内未分配任何空间。默认情况下,字符串为空。它没有字符串长度,因此尝试索引字符串(如
Encryption[i]
中所述)毫无意义。没有
Encryption[i]
被访问,并且尝试访问没有定义的结果。它可能会使您的程序崩溃。它可能看起来像正在运行,稍后会使您的程序崩溃。它可能会执行任何操作,包括看起来正在工作

要解决此问题,需要分配空间。在读入要编码的消息后

cout << "\n\nEnter Your Message: "; 
getline(cin, Message);

分配您需要的存储空间。

我不明白您需要什么mean@MumatAyubAli拿两个。
        cout <<"Encryption: "<< Result <<endl;  
        cout << "\n\n"<<endl;
    }
}
cout << "\n\nEnter Your Message: "; 
getline(cin, Message);
Encryption.resize(Message.size());