STL string

Posted Z-Y-Y-S

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL string相关的知识,希望对你有一定的参考价值。

初始化:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s;//默认初始化,一个空字符串
    string s1("ssss");//s1是字面值“ssss”的副本
    string s2(s1);//s2是s1的副本
    string s3=s2;//s3是s2的副本
    string s4(10,c);//把s4初始化
    string s5="hiya";//拷贝初始化
}

 

字符串处理:

substr操作:

注意substr没有迭代器作为参数的操作

1 //s.substr(pos1,n)返回字符串位置为pos1后面的n个字符组成的串
2     string s2=s.substr(1,5);//abcde
3 
4     //s.substr(pos)//得到一个pos到结尾的串
5     string s3=s.substr(4);//efg

insert操作:

 1     string str="to be question";
 2     string str2="the ";
 3     string str3="or not to be";
 4     string::iterator it;
 5 
 6     //s.insert(pos,str)//在s的pos位置插入str
 7     str.insert(6,str2);                 // to be the question
 8 
 9     //s.insert(pos,str,a,n)在s的pos位置插入str中插入位置a到后面的n个字符
10     str.insert(6,str3,3,4);             // to be not the question
11 
12     //s.insert(pos,cstr,n)//在pos位置插入cstr字符串从开始到后面的n个字符
13     str.insert(10,"that is cool",8);    // to be not that is the question
14 
15     //s.insert(pos,cstr)在s的pos位置插入cstr
16     str.insert(10,"to be ");            // to be not to be that is the question
17 
18     //s.insert(pos,n,ch)在s.pos位置上面插入n个ch
19     str.insert(15,1,:);               // to be not to be: that is the question

erase操作:

用来执行删除操作
删除操作有三种

指定pos和len,其中pos为为起始位置,pos以及后面len-1个字符串都删除

迭代器,删除迭代器指向的字符

迭代器范围,删除这一范围的字符串,范围左闭右开

 1 std::string str ("This is an example sentence.");
 2   std::cout << str << \n;
 3                           // "This is an example sentence."
 4   str.erase (10,8);       //            ^^^^^^^^
 5   //直接指定删除的字符串位置第十个后面的8个字符
 6   std::cout << str << \n;
 7                             // "This is an sentence."
 8   str.erase (str.begin()+9);//           ^
 9   //删除迭代器指向的字符
10   std::cout << str << \n;
11                             // "This is a sentence."
12                             //       ^^^^^
13   str.erase (str.begin()+5, str.end()-9);
14   //删除迭代器范围的字符
15   std::cout << str << \n;
16                             // "This sentence."

 

string的搜索操作:

find和rfind函数:

find函数主要是查找一个字符串是否在调用的字符串中出现过,大小写敏感。

1 //在str当中查找第一个出现的str2,找到则返回出现的位置,否则返回结尾
2     std::size_t found = str.find(str2);
3 
4  //在str当中,从第found+1的位置开始查找参数字符串的前6个字符
5     found=str.find("needles are small",found+1,6);
6 
7 //在str当中查找参数中的字符串
8     found=str.find("haystack");

rfind函数就是找最后一个出现的匹配字符串,返回的位置仍然是从前往后数的。

1   std::string str ("The sixth sick sheik‘s sixth sheep‘s sick.");
2     std::string key ("sixth");//                    ^
3     //rfind是找最后一个出现的匹配字符串
4     std::size_t found = str.rfind(key);

 

compare函数:

和strcmp函数一样,如果两个字符串相等,那么返回0,调用对象大于参数返回1,小于返回-1。

1 string s1="123",s2="123";
2     cout<<s1.compare(s2)<<endl;//0
3 
4     s1="123",s2="1234";
5     cout<<s1.compare(s2)<<endl;//-1
6 
7     s1="1234",s2="123";
8     cout<<s1.compare(s2)<<endl;//1

 

以上是关于STL string的主要内容,如果未能解决你的问题,请参考以下文章

c++_STL_string类简介

c++_STL_string类简介

65)STL中string的知识

[C++STL]string容器用法介绍

如何在 C++ 中将 stl::string 写入 HDF5 文件

stl中String类的实现