C++————string小技巧
在 C++ 中,std::string 是标准库提供的一个用于处理字符串的类,它位于 <string> 头文件中。与传统的 C 风格字符串(以 '\0' 结尾的字符数组)相比,string 提供了更方便、安全和强大的字符串处理功能。
初始化:
string s1;// 默认初始化,创建一个空字符串(s1:)
string s2 = "Hello";// 使用字符串字面量初始化(s2: Hello)
string s3(s2); // 拷贝初始化(s3: Hello)
string s4(5, 'a');// 直接初始化,指定重复次数和字符(s4: aaaaa)
长度获取:
可以使用 size() 或 length() 成员函数获取字符串的长度。
string.size()
string.length()
拼接:
可以使用 + 运算符或 += 运算符来拼接字符串,彻底摆脱低端strcat();
比较:
可以使用 ==、!=、<、> 等比较运算符来比较字符串。返回的是布尔值true(1),false(0)。
访问字符:
可以使用下标运算符 [] 或 at() 成员函数来访问字符串中的单个字符,恢复c语言的char str[],重新把字符串当数组用。
常用函数:
-
substr():截取子字符串
string str = "Hello, World!";
string sub = str.substr(7, 5); // 从索引 7 开始,截取 5 个字符(World)
substr(开始截取的位置,截取字符数) ;返回的是一个string。
std::string substr(size_t pos = 0, size_t count = npos) const;
注意:
- 初始位置要合法
- 如果想要截取的太大而字符串剩下的不够,则是有多少截取多少,也就是说到字符串末尾自动结束
-
find():查找子字符串
string mainStr = "Hello, World! Hello, C++!";
string subStr = "Hello";
size_t foundPos = mainStr.find(subStr, 7);
if (foundPos != string::npos) {cout << foundPos << endl;}
size_t类型(其实也能用int)如果找到了返回首字符的索引,如果没有找到返回string::npos。
size_t 变量名(储存的是位置)= string(字符串名).find(被查询字符串,初始查询位置);
size_t find(const std::string& str, size_t pos = 0) const;
注意:
- 返回的是第一次发现的目标字符串,若有多个只返回第一个。
- 如果找不到返回的string::nops是<string>里的常量。
-
erase():删除子字符串
string str = "Hello, World!";
str.erase(7, 5); // 从索引 7 开始,删除 5 个字符(Hello, !)
转化为C形式:
可以使用 c_str() 成员函数将string 转换为 C 风格字符串(以 '\0' 结尾的字符数组)。
string str = "Hello";
const char* cstr = str.c_str();
printf("%s\n", cstr);//(Hello)
木有辣

浙公网安备 33010602011771号