我该怎么做" rot-13 decode"在MFC?

时间:2016-07-23 05:36:44

标签: c++ mfc

好吧,我想创建一个具有编码和解码功能的函数。 所以,我研究了" rot-13编码"并解决了这个问题:

char* szTemp = "Hello World";
for (int i = 0; i < strlen(szTemp); i++)
{
    if       (szTemp[i] >= 'a' && szTemp[i] <= 'm') szTemp[i] += 13;
    else if  (szTemp[i] >= 'A' && szTemp[i] <= 'M') szTemp[i] += 13;
    else if  (szTemp[i] >= 'n' && szTemp[i] <= 'z') szTemp[i] -= 13;
    else if  (szTemp[i] >= 'N' && szTemp[i] <= 'Z') szTemp[i] -= 13;
}
MessageBox(szTemp);

但它有一些错误。它是什么?任何人都帮助我!

1 个答案:

答案 0 :(得分:1)

在MFC中,关于CString ...

的全部内容
    CString sTemp = "Hello World";
    CString sResult = "";
    int nLength = sTemp.GetLength();
    char c;

    for ( int i = 0 ; i < nLength ; ++i )
    {
        c = sTemp[i];
        if       (c>= 'a' && c<= 'm') c+= 13;
        else if  (c>= 'A' && c<= 'M') c+= 13;
        else if  (c>= 'n' && c<= 'z') c-= 13;
        else if  (c>= 'N' && c<= 'Z') c-= 13;
        sResult += c;
    }

    AfxMessageBox( sResult );

也可以通过直接访问缓冲区来完成,在这种情况下,您几乎可以使用所有原始代码。它看起来像这样:

    CString sTemp = "Hello World";
    int nLength = sTemp.GetLength();

    // Limit scope of szTemp since it is not usable after 
    // the call to ReleaseBuffer
    {
        char* szTemp = sTemp.GetBuffer();

        for (int i = 0; i < nLength; i++)
        {
            if       (szTemp[i] >= 'a' && szTemp[i] <= 'm') szTemp[i] += 13;
            else if  (szTemp[i] >= 'A' && szTemp[i] <= 'M') szTemp[i] += 13;
            else if  (szTemp[i] >= 'n' && szTemp[i] <= 'z') szTemp[i] -= 13;
            else if  (szTemp[i] >= 'N' && szTemp[i] <= 'Z') szTemp[i] -= 13;
        }
        sTemp.ReleaseBuffer();
    }

    AfxMessageBox( sTemp );

希望有所帮助, d *