what(): basic_string::_M_construct 空无效错误
what(): basic_string::_M_construct null not valid error
#include<iostream>
#include<string>
using namespace std;
string generateKey(string str, string key)
{
int x = str.size();
for(int i=0; ;i++)
{
if(x==i)
i=0;
if(key.size() == str.size())
break;
key.push_back(key[i]);
}
return key;
}
string cipherText(string str, string key)
{
string cipher_text;
for(int i=0; i<str.size(); i++)
{
int x=(str[i]+key[i])%26;
x+='A';
cipher_text.push_back(x);
}
return cipher_text;
}
string originalText(string cipher_text, string key)
{
string orig_text;
for(int i=0;i<cipher_text.size(); i++)
{
int x=(cipher_text[i]-key[i] +26)%26;
x +='A';
orig_text.push_back(x);
}
return orig_text;
}
int main()
{
int x;
cout<<"Enter your choice"<<endl;
cout<<"1. Mono-alphabeticn2. Poly-alphabeticn";
cin>>x;
switch(x)
{
case 1:
cout<<"Mono-alphabetic cipher"<<endl;
cout<<"Enter your choice n 1.Encryptionn 2.Decryptionn";
int b;
cin>>b;
switch(b)
{
case 1:
int k,i;
char plainText[100];
cout<<"Encryptionn";
cout<<"Enter Plain text"<<endl;
cin>>plainText;
cout<<"Enter Encryption key"<<endl;
cin>>k;
for(i=0;(i<100 && plainText[i]!=' ');i++)
plainText[i]=plainText[i]+k;
cout<<"n Encrypted text:"<<plainText<<endl;
break;
case 2:
int d;
char encrypedText[100];
cout<<"Decryptionn";
cout<<"Enter Encrypted text"<<endl;
cin>>encrypedText;
cout<<"Enter Decryption key"<<endl;
cin>>d;
for(i=0;(i<100 && encrypedText[i]!=' ');i++)
encrypedText[i]=encrypedText[i]-d;
cout<<"n Decrypted text:"<<encrypedText<<endl;
break;
default:
cout<<"WRONG Choice Entered!!!n";
break;
}
case 2:
{
cout<<"Poly-alphabetic"<<endl;
string str ="PLANTTHATBOMBTHERE";
string keyword="AMAZON";
string key =generateKey(str,key);
string cipher_text = cipherText(str,key);
cout<<"Ciphertext:"<<cipher_text<<endl;
cout<<"Original text:"<<originalText(cipher_text, key);
break;
break;
}
}
}
此代码用于替换密码,并且多字母密码部分未运行,显示 std::logic_error 错误和 what((: basic_string::_M_construct 空无效错误请帮助第一部分运行正常,没有任何错误,但多字母密码部分没有显示任何编译错误,它只显示运行时错误
string keyword="AMAZON";
string key =generateKey(str,keyword);
string cipher_text = cipherText(str,key);
cout<<"Ciphertext:"<<cipher_text<<endl;
您将键变量用作参数,以便在它获得内存之前运行。尝试上面的代码。
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 无法访问嵌套类.类的使用无效
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- FFMPEG配置文件级别id大小无效
- 错误:从"int"到枚举c++的转换无效
- 如何修复此错误:className::className的无效使用
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- C++-模板嵌套类的引用初始化无效
- 错误:无效的预处理指令 #i 的意思是 #if?
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 从 'int' 到 'int*' CPP 的转换无效
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息
- C++ PTHREADS - 无效转换无效*(*)()到无效*(*)(无效*)
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 数组下标的类型"float*[float]"无效
- 修改 std::vector 会使迭代器无效吗?