到目前为止,我有这个
#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
答案 0 :(得分:1)
您的else
阻止应为:
else
{
t += plaintext[i];
}
如果字符不是字母,则不会附加到字符串。使用plaintext[i] == '!'
运行您的代码。