#4220. 字符串笔记

字符串笔记

当前没有测试数据。

C++ 字符与字符串学习笔记

目录

  1. ASCII 码基础
  2. 字符数据类型
  3. 字符串数据类型
  4. 输入输出方法
  5. 字符判断方法
  6. 字符转换技巧
  7. 字符数组与字符串长度
  8. 示例代码分析

一、ASCII 码基础

ASCII(American Standard Code for Information Interchange)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

ASCII 码要点

  • 每个字符对应一个 0-127 之间的数字
  • 常见字符范围:
    • 数字 0-9:对应 ASCII 码 48-57
    • 大写字母 A-Z:对应 ASCII 码 65-90
    • 小写字母 a-z:对应 ASCII 码 97-122

ASCII 码表部分示例

字符 ASCII 值
'0' 48
'1' 49
'A' 65
'B' 66
'a' 97
'b' 98

二、字符数据类型

字符变量定义

使用 char 关键字定义单个字符变量,用单引号括起字符。

char c = 'x';  // 定义字符变量 c,值为 'x'

字符与整数的关系

字符在内存中以 ASCII 码形式存储,可以与整数相互转换。

char c = 'A';  // c 的 ASCII 值为 65
int num = c;   // num 的值为 65
char d = 97;   // d 的值为 'a'(ASCII 97 对应 'a')

三、字符串数据类型

字符串变量定义

C++ 中有两种表示字符串的方式:字符数组和 string 类型。

1. 字符数组方式

char c[10010];  // 定义长度为 10010 的字符数组

2. string 类型方式(推荐)

需要包含 <string> 头文件(使用 bits/stdc++.h 时已包含)。

string s = "Hello World";  // 定义字符串 s

字符串本质

  • string 类型是 C++ 提供的高级字符串类,本质上是字符数组的封装
  • 字符数组是 C 风格的字符串表示方式

四、输入输出方法

字符串输入

1. 使用 cin 输入

string s;
cin >> s;  // 输入不含空格的字符串,如 "Hello"
  • 特点:遇到空格、制表符或换行符时停止读取

2. 使用 getline 输入

string s;
getline(cin, s);  // 输入含空格的字符串,如 "Hello World"
  • 特点:读取整行内容,包括空格,直到遇到换行符

字符串输出

使用 cout 输出字符串:

string s = "Hello";
cout << s;  // 输出: Hello

五、字符判断方法

判断字符类型

1. 判断大写字母

char cc = 'A';
if (cc >= 'A' && cc <= 'Z') {
    // 是大写字母
}

2. 判断小写字母

char cc = 'a';
if (cc >= 'a' && cc <= 'z') {
    // 是小写字母
}

3. 判断数字字符

char cc = '5';
if (cc >= '0' && cc <= '9') {
    // 是数字字符
}

六、字符转换技巧

大小写字母转换

1. 大写转小写

char ccc = 'A';
ccc = ccc - 'A' + 'a';  // 结果:'a'
// 等价于:ccc += 32;

2. 小写转大写

char ccc = 'b';
ccc = ccc - 'a' + 'A';  // 结果:'B'
// 等价于:ccc -= 32;

数字字符与数字的转换

1. 数字字符转数字

char ccc = '6';
int a = ccc - '0';  // 结果:6(整数)

2. 数字转数字字符

int a = 3;
char ccc = a + '0';  // 结果:'3'(字符)

七、字符数组与字符串长度

字符数组长度

使用 strlen 函数获取字符数组中实际存储的字符个数(需包含 <cstring> 头文件)。

char c[100] = "Hello";
int len = strlen(c);  // len 的值为 5

string 类型长度

使用 size()length() 方法获取字符串长度。

string s = "Hello";
int len1 = s.size();    // len1 的值为 5
int len2 = s.length();  // len2 的值为 5

八、示例代码分析

完整示例代码

#include<bits/stdc++.h>
using namespace std;

char c[10010];  // 字符数组
string s = "12 ab";  // 字符串
int s1 = 109;  // 初始计数

int main() {
    cin >> s;  // 输入不含空格的字符串
    getline(cin, s);  // 输入含空格的字符串
    cout << s;
    
    s.size();  // 获取字符串长度
    
    // 字符判断示例
    char cc = 'a';
    if (cc >= 'A' && cc <= 'Z') {
        // 是大写字母
    }
    
    if (cc >= 'a' && cc <= 'z') {
        // 是小写字母
    }
    
    if (cc >= '0' && cc <= '9') {
        // 是数字字符
    }
    
    // 字符转换示例
    char ccc = 'A';
    ccc = ccc - 'A' + 'a';  // 大写转小写
    
    ccc = 'b';
    ccc = ccc - 'a' + 'A';  // 小写转大写
    
    ccc = '6';
    int a = ccc - '0';  // 字符 '6' 转数字 6
    
    a = 3;
    ccc = a + '0';  // 数字 3 转字符 '3'
    
    // 统计字符 '1' 出现次数示例
    cin >> c;
    for (int i = 0; i < strlen(c); i++) {
        if (c[i] == '1') {
            s1++;
        }
    }
    cout << s1;
    
    return 0;
}

代码功能解释

  1. 输入部分:演示了两种字符串输入方式
  2. 字符串长度:展示了获取字符串长度的方法
  3. 字符判断:实现了大写字母、小写字母和数字字符的判断
  4. 字符转换:展示了大小写转换以及数字与字符的相互转换
  5. 字符统计:统计字符数组中字符 '1' 出现的次数