好吧,我想创建一个具有编码和解码功能的函数。 所以,我研究了" 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);
但它有一些错误。它是什么?任何人都帮助我!
答案 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 *