目录
  • C++:string字符串的切片
    • 1.substr用于进行已知序号的切片操作 
    • 2.find函数和substr函数
  • C++特定分隔符将字符串进行分割
    • 总结

      C++:string字符串的切片

      string字符串在C++中不能直接进行切片操作,需要借助函数find和substr进行

      1.substr用于进行已知序号的切片操作 

      substr语法为 :

      string对象.substr(起点 , 切片长度)

      operate_str = initial_str.substr(0, 3);

      代码演示如下

          //使用substr函数实现已知序号的字符串切片
          string initial_str = "0123456789";
          string operate_str;
          operate_str = initial_str.substr(0, 3); //从0号开始,切片长度为3,即截取0到(0 + 3 - 1)号
          cout << "operate_str = " << operate_str << endl; //输出结果为012

      2.find函数和substr函数

      配合用于进行已知特征字符串的字符串切片

      find函数处理对象中存在特征字符串时返回特征串第一个字符的序号,若对象中不存在特征字符串则返回-1

      find函数语法为:

      string对象.find(特征字符串)

      int start = initial_str.find(key1); 

      以下配合substr实现已知特征字符串的字符串切片

          //使用substr函数配合find函数实现已知特征串的字符串切片
          string key1 = "23"; //定义特征串
          int len = 5; //定义切片长度
          int start = initial_str.find(key1); //返回特征串第一个字符的序号,此处为2
          string key2 = "abc"; //测试不存在特征串返回值
          int result = initial_str.find(key2);
          cout << "result = " << result << endl; //对象中不存在特征串,此处输出为 -1
          operate_str = initial_str.substr(start, len); //从start开始,切片长度为len,即截取start到(start + len - 1)号
          cout << "operate_str = " << operate_str << endl; //输出结果为23456

      (变量与只使用substr时相同)

      C++特定分隔符将字符串进行分割

      使用特定分隔符’\n’将字符串进行分割,如传参数“2023\n01\n13”,则输出结果为

      2023
      01
      13

      void SplitString(std::string str){
      	if(str.empty()){
      		return;
      	}
      	vector<std::string> res;
      	const char split = '\n'; //分割符
      	std::string strs = str + split;
      	size_t i = 0;
      	size_t pos = strs.find(split,i);
      	while(pos ! = strs.npos){
      		string temp = strs.substr(i, pos - i);
      		res.push_back(temp);
      		i = pos + 1;
      		pos = strs.find(split,i) 
      	}
      	for(int i=0;i<res.size();i++){
      		cout>>res.[i]>>endl;
      	}
      }

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。