これまでのところ、私はこのシーザー暗号プログラム
#include <iostream>
using namespace std;
string encryptText(string plaintext, int rshift)
{
string t;
for (int i=0;i<plaintext.length();i++)
{
if (islower(plaintext[i]))
t += char(int(plaintext[i]+rshift-97)%26 +97);
else if (isupper(plaintext[i]))
t += char(int(plaintext[i]+rshift-65)%26 +65);
else
t;
}
return t;
}
int main()
{
string plaintext, t;
int rshift;
cout << "enter the plaintext\n";
getline (cin,plaintext);
cout << "enter the right shift number\n";
cin >> rshift;
cout << encryptText (plaintext, rshift)<< endl;
}
問題を抱えているが、私のプログラムは、ユーザーの入力(平文)から、スペースが含まれていないことです。また、それは特別なcharectersを含んでいます。例えば、私は10の右シフトと入力
Hello World!
私は
Rovvy Gybvn!
を取得する必要がありますが、代わりに、私は
RovvyGybvn
"*私はRovvy Gybvnを取得する必要があります!buの代わりにRovvy Gybvn!*" - ? – Fureeish
'else t;'は何もしません。 –
無関係: 'rshift-97'の代わりに' rshift-aa'を使用してください。 1.それは意図を推測するのが簡単です。 2.より多様なキャラクタセットに移植可能です。 – user4581301