C++————string小技巧

在 C++ 中,std::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;

注意:

  1. 初始位置要合法 
  2. 如果想要截取的太大而字符串剩下的不够,则是有多少截取多少,也就是说到字符串末尾自动结束
  •  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;

注意:

  1. 返回的是第一次发现的目标字符串,若有多个只返回第一个。
  2. 如果找不到返回的string::nops是里的常量。
  • 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)

                                                                   木有辣                                                                             

你可能感兴趣的:(c/c++,c++)