【发布时间】:2020-05-08 18:24:09
【问题描述】:
我正在用字母表中的另一个字母替换字母表中的每个字母。 例如,每个“a”被替换为“Q”,每个“b”被替换为“W”。 我已经编写了代码来加密下面的句子。
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main(){
string alphabet {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
string key {"QWERTYUIOPasdfghjklZXCVBNMqwertyuiopASDFGHJKLzxcvbnm"};
string original {};
string encrypted {};
cout<<"Enter your secret message: ";
getline(cin ,original);
// cout<<"Encrypting message..."<<endl;
for(int i=0;i<original.length();i++){
if(isalpha(original.at(i)) == 1){
encrypted.at(i) = key.at(alphabet.find(original.at(i)));
}
else
encrypted.at(i) = original.at(i);
}
cout<<"Encrypted message: "<<encrypted<<endl;
}
我正在更改字符串字母表中索引为 i 的每个字符,并使用键中相同索引的字符。 例如:- 如果原始字符串 = "Hello" 加密字符串应该是“iTssg”
但是当我运行这个程序时,我得到一个错误
输出: 输入你的秘密信息:你好 在抛出 'std::out_of_range' 的实例后调用终止 what(): basic_string::at: __n (0) >= this->size() (0)
谁能告诉我我应该对这段代码进行哪些更改?
【问题讨论】:
-
你应该在这里探索
std::unordered_map的使用。