#4222. 字符串笔记2

字符串笔记2

当前没有测试数据。

C++ 字符串处理与回文判断课堂笔记

一、字符串基础操作

  1. 字符串拼接

    • 字符串与字符串相加:string s1="abc", s2="def"; cout << s1 + s2; // 输出 "abcdef"
    • 字符串与单个字符相加:string s="abc"; char c='d'; cout << s + c; // 输出 "abcd"
    • 单个字符与单个字符相加:计算ASCII码之和,char c1='a', c2='b'; cout << c1 + c2; // 输出 195 (97+98)
  2. 字符串输入输出

    string s;
    cin >> s;       // 读取到空格停止
    getline(cin, s);// 读取整行
    cout << s;
    

二、回文判断方法

  1. 数字回文判断

    int x = 12321;
    int b = x, dao = 0;
    while (b > 0) {
        dao = dao * 10 + b % 10;
        b /= 10;
    }
    if (dao == x) cout << "回文"; else cout << "不是回文";
    
  2. 字符串回文判断

    string s = "abcba";
    string s2;
    for (int i = s.size() - 1; i >= 0; i--) {
        s2 = s2 + s[i];
    }
    if (s2 == s) cout << "回文"; else cout << "不是回文";
    

三、字符串常用函数

函数名 功能描述 示例代码
s.erase(pos,len) 删除从pos开始的len个字符 string s="123abc"; s.erase(1,2); // s变为"1abc"
s.find(str,pos) 从pos开始查找str第一次出现的位置,返回首字符下标,找不到返回string::npos string s="c123abcc"; int x=s.find("abc"); // x=4
s.insert(pos,str) 在pos位置前插入字符串str string s="abcabc"; s.insert(3,"xy"); // s变为"abcxyabc"
s.substr(pos,len) 截取从pos开始长度为len的子串 string s="123abc"; string sub=s.substr(2,2); // sub为"3a"
s.replace(pos,len,str) 将从pos开始的len个字符替换为str string s="123abc"; s.replace(2,2,"xy"); // s变为"12xybc"

四、字符串与数字互转

  1. 字符串转数字

    string s = "1234";
    int ans = 0;
    for (int i = 0; i < s.size(); i++) {
        ans = ans * 10 + (s[i] - '0');
    }
    // ans = 1234
    
  2. 数字转字符串

    int a = 12345;
    string ss;
    while (a > 0) {
        int ge = a % 10;
        ss = char(ge + '0') + ss;
        a /= 10;
    }
    // ss = "12345"
    

五、字符频率统计

string s = "aaabbccczz";
int b[30] = {0}; // b[1]统计'a'出现次数,b[2]统计'b'...
for (int i = 0; i < s.size(); i++) {
    b[s[i] - 'a' + 1]++;
}
// 输出每个字符出现次数
for (int i = 1; i <= 26; i++) {
    cout << char('a' + i - 1) << "出现次数: " << b[i] << endl;
}

六、字符串比较规则

  • 字典序比较:从第一个字符开始比较ASCII码值,直到出现不同字符或其中一个字符串结束。
    string s1 = "ab", s2 = "abc";
    if (s1 < s2) cout << "s1 < s2"; // 输出 "s1 < s2"
    

七、常用ASCII码值

字符 ASCII码值
'0' 48
'1' 49
...
'9' 57
'A' 65
'B' 66
...
'Z' 90
'a' 97
'b' 98
...
'z' 122

八、注意事项

  1. 字符串索引:从0开始,s[0]是第一个字符
  2. 字符串长度s.size()s.length()返回字符串长度
  3. 字符操作:字符可以直接进行加减运算,如'a'+1等于'b'