C++ 修改带有数字的字符串时出现问题

C++ Problems modifying string with numbers

本文关键字:问题 字符串 修改 数字 C++      更新时间:2023-10-16

我做了一个简单的加密功能,它加密除0-9个数字以外的所有内容(忽略特殊字符)。

这是代码。

#include <iostream>
using namespace std;
void encrypt(char s[])
{
    char *ptr;
    ptr=s;
    while(*ptr)
    {
            switch (*ptr)
        {
            case 'a':   *ptr='b';
                        break;
            case 'b':   *ptr='a';
                        break;
            case 'c':   *ptr='z';
                        break;
            case 'd':   *ptr='y';
                        break;
            case 'e':   *ptr='c';
                        break;
            case 'f':   *ptr='d';
                        break;
            case 'g':   *ptr='x';
                        break;
            case 'h':   *ptr='g';
                        break;
            case 'i':   *ptr='i';
                        break;
            case 'j':   *ptr='h';
                        break;
            case 'k':   *ptr='f';
                        break;
            case 'l':   *ptr='j';
                        break;
            case 'm':   *ptr='q';
                        break;
            case 'n':   *ptr='o';
                        break;
            case 'o':   *ptr='p';
                        break;
            case 'p':   *ptr='m';
                        break;
            case 'q':   *ptr='n';
                        break;
            case 'r':   *ptr='l';
                        break;
            case 's':   *ptr='k';
                        break;
            case 't':   *ptr='x';
                        break;
            case 'u':   *ptr='w';
                        break;
            case 'v':   *ptr='u';
                        break;
            case 'w':   *ptr='v';
                        break;
            case 'x':   *ptr='t';
                        break;
            case 'y':   *ptr='s';
                        break;
            case 'z':   *ptr='r';
                        break;
            case 1:   *ptr=5;
                        break;
            case 2:   *ptr=6;
                        break;
            case 3:   *ptr=0;
                        break;
            case 4:   *ptr=1;
                        break;
            case 5:   *ptr=2;
                        break;
            case 6:   *ptr=7;
                        break;
            case 7:   *ptr=4;
                        break;
            case 8:   *ptr=3;
                        break;
            case 9:   *ptr=8;
                        break;
            case 0:   *ptr=9;
                        break;
            default:    *ptr=*ptr;
                        break;
        }
        *ptr++;
    }
    *ptr='';
}
int main()
{
   char password[10];
   cout<<"Enter the passwordn";
   cin>>password;
   encrypt(password);
   cout<<password<<endl;
   return 0;
}

下面是一个示例输出SH-4.3$ 主要
输入密码
这是嗖嗖嗖!!
1234567嘻嘻!!1234567

您需要

使用字符'1'而不是整数值 1。

因此,使用case '1':而不是case 1:等其他数字。

正如nos所说,字符与整数值不同。但是,查看您的代码,这样做会更有意义:

#include <iostream>
#include <string>
using namespace std;
int main(){
    string charset = "abcdefghijklmnopqrstuvwxyz1234567890";
    string scrambledcharset = "r5b6ng1fcl8htau9i74kxy0vjw3psemqz2do";  //Whatever order you want
    string uIn;
    string output;
    cout << "Enter your string: ";
    cin >> uIn;
    cin.ignore();
    for(int i = 0; i < uIn.length(); i++){
        for(int j = 0; j < charset.length(); j++){
            if(uIn[i] == charset[j]){
                output += scrambledcharset[j];
            }
        }
    }
    cout << "nScrambled: " << output;
    return 0;
}