C++ string 字符串类详解
2022/5/29 1:21:02
本文主要是介绍C++ string 字符串类详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 简介
- string 类使用方法
- 1. 头文件 + 命名空间
- 2. 定义 / 构造 / 初始化
- 3. 读取 / 输入
- 4. 简单基本操作
- 5. 字符串拼接
- 6. 数值 → 字符串
- 7. 字符串 → 数值
- 8. 插入 / 删除
- 9. 提取子字符串
- 10. 查找子字符串
简介
-
为什么选择使用
string
来表示字符串?char
不足够吗?在 C++ 中,字符的数据类型是
char
,但是使用char
只能表示单个字符。若要表示一个字符串,就需要使用字符数组
char[]
。可是,在使用
char[]
时有一个弊端:如果需要输出字符串时,需要循环遍历字符数组中的每一个元素。
这种时候,使用
string
类会更方便处理字符串。 -
string 字符串类的特点
-
没有固定的长度,不需要提前确认存储的字符串长度
-
直接将字符串存为一个变量,而不是多个字符
-
回到顶部
string 类使用方法
1. 头文件 + 命名空间
C++ 中,使用 string
字符串类需要包含头文件 #include<string>
。
由于 string
属于命名空间 std
的范畴,因此,也需要声明使用的命名空间。
// (A) 头文件 #include <string> // (B) 命名空间 // 方法1:直接声明使用整个命名空间 using namespace std; string s1; // 方法2:不直接声明整个命名空间,在使用 string 时需要用: std::string s1;
回到顶部
2. 定义 / 构造 / 初始化
// (A) 定义一个默认的空字符串 string s1; // (B) 定义 + 用字符串初始化 string s2("happy"); string s2 = "happy"; // (C) 用已有的字符串构造新的字符串 string s3(s2); string s3(s2, 1, 3); // 以s2的下标为1的字符为起点,取3个字符,s3 = "app" string s3(s2.begin(), s2.begin() + 4); // s3 = "happ" string s3("happy life", 8); // 从字符串中取前8个字符,s3 = "happy li" // (D) 用单个字符进行构造 string s4(5,'h'); // s4 = "hhhhh"
回到顶部
3. 读取 / 输入
string name; // 方法1:读取字符串,遇到空格时停止 cin >> name; // 方法2:读取完整的一行 getline(cin, name); // 方法3:读取,直到指定的分隔符才停止 getline(cin, name, '@'); /* 如果输入数据为: Karry Wang Zhuang WenJie @ 使用以上三种方法,得到的 name 为: 方法1 Karry 方法2 Karry Wang 方法3 Karry Wang\nZhuang WenJie\n */
回到顶部
4. 简单基本操作
// 使用下标访问 cout << str[1]; // 使用范围遍历 for(char c: str) { cout << c << " "; } // 清空元素 str.clear(); // 检查是否为空 if(str.empty()) { ...... } // 查询字符串长度 cout << str.size(); cout << str.length(); // 比较字符串大小(字典序考前的较小) string s1 = "abc", s2 = "bde"; if(s1 < s2) { ... } if(s1 == s2) { ... } if(s1 > s2) { ... } // 转换为 C 风格字符串 string word = "happy"; word.c_str();
回到顶部
5. 字符串拼接
// 添加单个字符 str.pushback('a'); // 添加字符串 str.append(s2); str += s2; // 拼接不同的字符或字符串 // 可以拼接多种数据类型,如:string、char、char*、char[] string s1 = "live"; string s2 = "happy"; char s3 = 'a'; char* s4 = "life"; char s5[] = "together"; string str = s1 + s2; string str = s1 + s3; string str = s1 + s4; string str = s1 + s5;
回到顶部
6. 数值 → 字符串
// int 转换成 string string str = to_string(1); string str = to_string(2 + 5); // ------------------------------------------------- // double 转换成 string string str1 = to_string(3.14); string str2 = to_string(3.14159265); /* 注意:str1 = "3.140000", str2 = "3.141593", 太短会自动补零,太长也会造成精度损失 */
回到顶部
7. 字符串 → 数值
// string 转换成 int int a = stoi("21"); int b = stoi("3.14"); // 转换结果:a = 21, b = 3 // 将 string 中的整数转换成 int,同时返回转换的长度 string::size_type sz; int c = stoi("21 girls", &sz); // 转换结果:c = 21, sz = 2 // 将16进制的 string 转换成10进制的 int int d = stoi("0x40c3", nullptr, 16); // 转换结果:d = 16579 // 自动检查进制,转换成10进制的 int int e = stoi("0x40c3", nullptr, 0); // 转换结果:3 = 16579 // ------------------------------------------------- /* 除了转换成 int 之外,也可以转换成 float 或 double 使用 stof 转换成 float 使用 stod 转换成 double */
回到顶部
8. 插入 / 删除
// 在指定下标的位置插入字符串 string str = "0123456789"; string add = "happy"; str.insert(5, add); // 插入结果:str = "01234happy56789" // ------------------------------------------------- string s1, s2; s1 = s2 = "0123456789"; // 删除指定下标位置开始的所有字符 s1.erase(5); // 从指定下标位置开始,删除指定数量的元素 s2.erase(5,3); // 删除结果:s1 = "01234", s2 = "0123489"
回到顶部
9. 提取子字符串
string s1 = "live a happy life"; string s2; // 从指定下标位置开始提取指定数量的元素 s2 = s1.substr(7, 10);
回到顶部
10. 查找子字符串
// 查找并返回子字符串第一次出现的下标位置 string s1 = "live a happy happy life"; string s2 = "happy"; int ind = s1.find(s2); if(ind < s1.length()) { cout << "Found at index " << ind; } // 输出结果:Found at index 7
回到顶部
这篇关于C++ string 字符串类详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享
- 2024-11-22ansible 的archive 参数是什么意思?-icode9专业技术文章分享
- 2024-11-22ansible 中怎么只用archive 排除某个目录?-icode9专业技术文章分享
- 2024-11-22exclude_path参数是什么作用?-icode9专业技术文章分享
- 2024-11-22微信开放平台第三方平台什么时候调用数据预拉取和数据周期性更新接口?-icode9专业技术文章分享
- 2024-11-22uniapp 实现聊天消息会话的列表功能怎么实现?-icode9专业技术文章分享
- 2024-11-22在Mac系统上将图片中的文字提取出来有哪些方法?-icode9专业技术文章分享
- 2024-11-22excel 表格中怎么固定一行显示不滚动?-icode9专业技术文章分享
- 2024-11-22怎么将 -rwxr-xr-x 修改为 drwxr-xr-x?-icode9专业技术文章分享
- 2024-11-22在Excel中怎么将小数向上取整到最接近的整数?-icode9专业技术文章分享