#4220. 字符串笔记
字符串笔记
当前没有测试数据。
C++ 字符与字符串学习笔记
目录
- ASCII 码基础
- 字符数据类型
- 字符串数据类型
- 输入输出方法
- 字符判断方法
- 字符转换技巧
- 字符数组与字符串长度
- 示例代码分析
一、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' 出现的次数