首先,我进入C++课程已有四周时间,我甚至还不知道循环,所以请说说话宝贝?
好的,所以我应该从文件中读取十二个字符串(加上NULL使得十三个),然后将字母向后移三个,然后将结果打印到屏幕和文件.除了换字母之外,我还好.我不想写几英里的代码来单独取每个字符,减去三个,然后重新组合字符串,但我不确定如何一次处理整个字符串.有人可以推荐一种非常简单的方法吗?
一旦你加载了你的字符串,你可以使用modulous运算符旋转,同时保持在AZ空间的范围内.
我会跟踪这封信是否是开头的资本:
bool isCaps = ( letter >= 'A' ) && ( letter <= 'Z' );
if( isCaps )
letter -= 'A'-'a';
Run Code Online (Sandbox Code Playgroud)
然后就像这样做密码转换:
int shift = -3;
letter -= 'a'; // to make it a number from 0-25
letter = ( letter + shift + 26 ) % 26;
// add 26 in case the shift is negative
letter += 'a'; // back to ascii code
Run Code Online (Sandbox Code Playgroud)
终于完成了
if( isCaps )
letter += 'A'-'a';
Run Code Online (Sandbox Code Playgroud)
所以,把所有这些放在一起我们得到:
char *mystring; // ciphertext
int shift = -3; // ciphershift
for( char *letter = mystring; letter; ++letter )
{
bool isCaps = ( *letter >= 'A' ) && ( *letter <= 'Z' );
if( isCaps )
*letter -= 'A'-'a';
letter -= 'a';
letter = ( letter + shift + 26 ) % 26;
letter += 'a';
if( isCaps )
letter += 'A'-'a';
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8813 次 |
最近记录: |