遇到C++相关问题
Having problems with C++ related issues
我写了一个C++程序来执行Vigenere密码,但我遇到了几个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 << "nnEnter Your Message: ";
getline(cin, Message);
cout << "nEnter The Main Key: ";
getline(cin, Key);
cout << "nn"<<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 << "nn"<<endl;
}
}
return 0;
}
/*
INPUT:
Enter Your Message: Hello There
Enter The Main Key: Secret
OUTPUT:
Encryption: Z
*/
第 1 点:程序不解密加密的消息
当然不是。该程序不包含任何将解密加密消息的代码。我无法在第 1 点上提供帮助。
第 2 点:最后一个for
循环不起作用。
您不需要循环来打印加密消息。
cout << "Encryption: " << Encryption<< endl;
cout << "nn" << endl;
第 3 点:"c++ 没有在我键入空格的位置添加空格">
我不明白你在这里的意思。请解释一下。
特点4:只打印一个字符
根据第 2 点,不需要此循环,但用于解释出了什么问题:
for (int i=0; i<=Message.size(); i++)
{
string Result;
创建一个名为 Result
的空临时字符串。每次循环运行时都会创建一个新的结果,而前一个结果将被销毁。
Result = Encryption[i];
将Result
设置为字符串 Encryption
中的第 i 个字符。结果现在只包含一个字符。
if ( i == Message.size() )
{
如果i
已达到消息的长度
cout <<"Encryption: "<< Result <<endl;
打印出Result
中的一个字符。
cout << "nn"<<endl;
}
}
另外:
string Encryption;
内没有分配空间。默认情况下,字符串为空。它没有字符串长度,因此尝试索引字符串,如Encryption[i]
,是没有意义的。没有要访问Encryption[i]
,并且尝试这样做没有定义的结果。它可能会使您的程序崩溃。它可能看起来像正在运行,稍后会使程序崩溃。它可以做任何事情,包括看起来它正在工作。
要解决此问题,需要使用 string::resize 分配空间。 读入要编码的消息后,
cout << "nnEnter Your Message: ";
getline(cin, Message);
加
Encryption.resize(Message.size());
以分配所需的存储。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题