换一串字符?

Chr*_*ian 0 c++

我正在编写一个用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)

复制并粘贴该代码,您就会看到我在说什么.我该如何解决这个神秘的问题?

MSa*_*ers 5

如果我没有弄错,你的循环与下面的代码完全相同:

letters = letters.substr(1,25) + letters.substr(0,1);
//        [skip 1, take 25]    + [first char goes last]
Run Code Online (Sandbox Code Playgroud)