我正在编写一个用 C++ 解决凯撒密码的程序。它采用字母表字符串,并在每次循环时将其向左移动:“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();
}
复制并粘贴该代码,您就会明白我在说什么。我该如何解决这个神秘的问题?
如果我没记错的话,您的循环与以下代码完全相同:
letters = letters.substr(1,25) + letters.substr(0,1);
// [skip 1, take 25] + [first char goes last]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)