我正在编写一个用C++解决Caesar密码的程序.它需要一串字母表并将其转移到每个循环的左侧:"abc .... yz" - >"bcd ..... yza".问题是在另一个循环之后:"bcd ..... yza" - >"cde ..... yzaa".
char temp; // holds the first character of string
string letters = "abcdefghijklmnopqrstuvwxyz";
while (true)
{
temp = letters[0];
for (int i = 0; i < 26; i++)
{
if (i == 25)
{
letters += temp;
}
letters[i] = letters[i + 1];
cout << letters[i];
}
cin.get();
}
Run Code Online (Sandbox Code Playgroud)
复制并粘贴该代码,您就会看到我在说什么.我该如何解决这个神秘的问题?
如果我没有弄错,你的循环与下面的代码完全相同:
letters = letters.substr(1,25) + letters.substr(0,1);
// [skip 1, take 25] + [first char goes last]
Run Code Online (Sandbox Code Playgroud)