到目前爲止,我有這個凱撒密碼程序
#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;
}
的問題是,我的程序不包括從用戶輸入(明文)的空間。此外,它還包括特殊的文字記錄器。例如,如果我輸入
Hello World!
與10右移,我應該得到
Rovvy Gybvn!
而是我得到
RovvyGybvn
「*我應該得到Rovvy Gybvn !. bu而不是我得到Rovvy Gybvn!*」 - ? – Fureeish
'else t;'什麼都不做。 – 2017-10-16 19:54:21
無關:使用'rshift-'a''而不是'rshift-97'。 1.更容易推斷意圖。 2.它可以移植到更多種類的字符集中。 – user4581301