C++ string类的常用方法(总结)

头文件#include<string>


1. 声明

string str1 = "hello";

string* str2 = new string("hello");

string st1("babbabab");

string(const char *s);    //用c字符串s初始化
string(int n,char c);     //用n个字符c初始化

2. string的特性描述

int capacity()const;    //返回当前容量(即string中不必增加内存即可存放的元素个数)
int max_size()const;    //返回string对象中可存放的最大字符串的长度
int size()const;        //返回当前字符串的大小
int length()const;       //返回当前字符串的长度
bool empty()const;        //当前字符串是否为空
void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分

3. 获取字符串的第一个字符

string::const_iterator it = str1.begin();
cout << *it << endl;

4. 获取字符串的最后一个字符(注意 it-- )

it = str1.end();//end是指向最后一个字符后面的元素,而且不能输出,所以cout << *it << endl;这样输出会报错
it--;
cout << *it << endl;

5. 字符串连接

string str4 = str1 + str3;

string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾 
string &append(const char *s);            //把c类型字符串s连接到当前字符串结尾
string &append(const char *s,int n);//把c类型字符串s的前n个字符连接到当前字符串结尾
string &append(const string &s);    //同operator+=()
string &append(const string &s,int pos,int n);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾
string &append(int n,char c);        //在当前字符串结尾添加n个字符c
string &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾

6. 倒置串

reverse(str1.begin(), str1.end());

7. string的子串

string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串

8. string的交换

void swap(string &s2);    //交换当前字符串与s2的值

9. 字符串转字符数组

string c = "abc123";
char *d = new char[20];
strcpy(d, c.c_str());//因为这里没有直接赋值,所以指针类型可以不用const char *

//strcpy(d, c); ---> 这样会报错!!!!
strcpy(d,"123456"); // 这里"123456"直接使用了

10. 字符串比较

bool t = str1 < str3

bool operator==(const string &s1,const string &s2)const;//比较两个字符串是否相等
运算符">","<",">=","<=","!="均被重载用于字符串的比较;
int compare(const string &s) const;//比较当前字符串和s的大小
int compare(int pos, int n,const string &s)const;//比较当前字符串从pos开始的n个字符组成的字符串与s的大小
int compare(int pos, int n,const string &s,int pos2,int n2)const;//比较当前字符串从pos开始的n个字符组成的字符串与s中pos2开始的n2个字符组成的字符串的大小
int compare(const char *s) const;
int compare(int pos, int n,const char *s) const;
int compare(int pos, int n,const char *s, int pos2) const;
compare函数在>时返回1<时返回-1==时返回0  

11. 查找串

find 从指定位置起向后查找,直到串尾
rfind 从指定位置起向前查找,直到串首

find_first_of 在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回-1

//find-从指定位置起向后查找,直到串尾
string st1("babbabab");

//1.默认从位置0(即第1个字符)开始查找
cout << st1.find('a') << endl;

//2.在st1中,从位置2(b,包括位置2)开始,查找a,返回首次匹配的位置
cout << st1.find('a', 2) << endl;

string st2("aabcbcabcbabcc");
str1 = "abc";

//3.从st2的位置2(b)开始匹配,返回第一次成功匹配时匹配的串(abc)的首字符在st2中的位置,失败返回-1
cout << st2.find(str1, 2) << endl;

//4.取abcdefg得前3个字符(abc)参与匹配,相当于st2.find("abc", 2)
cout << st2.find("abcdefg", 2, 3) << endl;

//rfind-从指定位置起向前查找,直到串首
cout << st1.rfind('a', 7) << endl;
//find_first_of-在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回-1
string str6("bcgjhikl");
string str7("kghlj");
cout << str6.find_first_of(str7, 0) << endl;//2,从str1的第0个字符b开始找,g与str2中的g匹配,停止查找,返回g在str1中的位置2

//find_last_of-与find_first_of函数相似,只不过查找顺序是从指定位置向前
string str("abcdecg");
cout << str.find_last_of("hjlywkcipn", 6) << endl;//5,从str的位置6(g)开始向前找,g不匹配,再找c,c匹配,停止查找,返回c在str中的位置5

//find_first_not_of-在源串中从位置pos开始往后查找,只要在源串遇到一个字符,与目标串中的任意字符都不相同,就停止查找,返回该字符在源串中的位置;若遍历完整个源串,都找不到满足条件的字符,则返回-1
cout << str.find_first_not_of("kiajbvehfgmlc", 0) << endl;//3   从源串str的位置0(a)开始查找,目标串中有a,匹配,..,找d,目标串中没有d(不匹配),停止查找,返回d在str中的位置3

//find_last_not_of-与find_first_not_of相似,只不过查找顺序是从指定位置向前
cout << str.find_last_not_of("kiajbvehfgmlc", 6) << endl;//3

12. string类的替换函数

string &replace(int p0, int n0,const char *s);//删除从p0开始的n0个字符,然后在p0处插入串s
string &replace(int p0, int n0,const char *s, int n);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符
string &replace(int p0, int n0,const string &s);//删除从p0开始的n0个字符,然后在p0处插入串s
string &replace(int p0, int n0,const string &s, int pos, int n);//删除p0开始的n0个字符,然后在p0处插入串s中从pos开始的n个字符
string &replace(int p0, int n0,int n, char c);//删除p0开始的n0个字符,然后在p0处插入n个字符c
string &replace(iterator first0, iterator last0,const char *s);//把[first0,last0)之间的部分替换为字符串s
string &replace(iterator first0, iterator last0,const char *s, int n);//把[first0,last0)之间的部分替换为s的前n个字符
string &replace(iterator first0, iterator last0,const string &s);//把[first0,last0)之间的部分替换为串s
string &replace(iterator first0, iterator last0,int n, char c);//把[first0,last0)之间的部分替换为n个字符c
string &replace(iterator first0, iterator last0,const_iterator first, const_iterator last);//把[first0,last0)之间的部分替换成[first,last)之间的字符串

13. string类的插入函数

string &insert(int p0, const char *s);
string &insert(int p0, const char *s, int n);
string &insert(int p0,const string &s);
string &insert(int p0,const string &s, int pos, int n);
//前4个函数在p0位置插入字符串s中pos开始的前n个字符
string &insert(int p0, int n, char c);//此函数在p0处插入n个字符c
iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置
void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first,last)之间的字符
void insert(iterator it, int n, char c);//在it处插入n个字符c

14. string类的删除函数

iterator erase(iterator first, iterator last);//删除[first,last)之间的所有字符,返回删除后迭代器的位置
iterator erase(iterator it);//删除it指向的字符,返回删除后迭代器的位置
string &erase(int pos = 0, int n = npos);//删除pos开始的n个字符,返回修改后的字符串

15. string类的迭代器处理

string类提供了向前和向后遍历的迭代器iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。
用string::iterator或string::const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。常用迭代器函数有:
const_iterator begin()const;
iterator begin();                //返回string的起始位置
const_iterator end()const;
iterator end();                    //返回string的最后一个字符后面的位置
const_iterator rbegin()const;
iterator rbegin();                //返回string的最后一个字符的位置
const_iterator rend()const;
iterator rend();                    //返回string第一个字符位置的前面
rbegin和rend用于从后向前的迭代访问,通过设置迭代器string::reverse_iterator,string::const_reverse_iterator实现

  • 8
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: string是标准C++中的一个字符串,它提供了许多常用方法,包括: 1. length():返回字符串的长度。 2. size():同length(),返回字符串的长度。 3. empty():判断字符串是否为空字符串。 4. clear():清空字符串。 5. resize():改变字符串的大小。 6. substr():返回字符串的子串。 7. find():查找子串在字符串中第一次出现的位置。 8. rfind():查找子串在字符串中最后一次出现的位置。 9. replace():替换字符串中的子串。 10. c_str():返回字符串的C风格字符串表示。 11. compare():比较两个字符串的大小。 这些方法都是很常用的,可以方便地操作字符串。 ### 回答2: string是Java中常用的一个,用于表示字符串。它包含了很多常用方法,下面我将介绍几个常用方法: 1. length()方法:用于返回字符串的长度。例如,对于字符串"Hello World",使用length()方法将返回11。 2. charAt()方法:用于返回指定位置上的字符。字符串中的每个字符都有一个对应的索引值,第一个字符的索引值为0。例如,对于字符串"Hello World",使用charAt(1)方法将返回'e'。 3. substring()方法:用于返回从指定位置开始到指定位置结束的子字符串。例如,对于字符串"Hello World",使用substring(6, 11)方法将返回"World"。 4. indexOf()方法:用于返回指定字符或子字符串在原字符串中第一次出现的位置。例如,对于字符串"Hello World",使用indexOf("o")方法将返回4。 5. toUpperCase()方法和toLowerCase()方法:分别用于将字符串中的字符转换为大写和小写。例如,对于字符串"Hello World",使用toUpperCase()方法将返回"HELLO WORLD",使用toLowerCase()方法将返回"hello world"。 这些只是string中的一小部分常用方法,还有很多其他的方法可以操作字符串。通过这些方法,我们可以对字符串进行长度判断、字符提取、子字符串截取、字符查找等各种操作,从而满足不同的需求。 ### 回答3: string是Java中用于表示字符串的一个。它提供了许多常用方法,方便我们对字符串进行操作。 首先是字符串的创建和获取长度。我们可以使用构造函数创建一个字符串对象,也可以使用双引号直接创建字符串常量。使用.length()方法可以获取字符串的长度。 接下来是字符串的拼接和切割。字符串拼接可以使用+运算符或.concat()方法进行,两个方法都可以将两个字符串连接起来。字符串切割可以使用.split()方法,该方法接收一个正则表达式作为参数,将字符串分割成多个子字符串。 然后是字符串的查找和替换。使用.indexOf()方法可以查找指定字符或字符串在原字符串中的位置,如果找到则返回其索引,否则返回-1。使用.replace()方法可以将一个字符串替换成另一个字符串。 还有字符串的大小写转换。使用.toUpperCase()方法可以将字符串转换成大写形式,使用.toLowerCase()方法可以将字符串转换成小写形式。 其次是字符串的截取和比较。使用.substring()方法可以截取字符串的一部分,指定起始索引和结束索引。使用.equals()方法可以比较两个字符串是否相等,区分大小写。使用.equalsIgnoreCase()方法可以比较两个字符串是否相等,不区分大小写。 最后是字符串的去除空格和判断开头或结尾。使用.trim()方法可以去除字符串前后的空格。使用.startsWith()方法可以判断字符串是否以指定字符或字符串开头,使用.endsWith()方法可以判断字符串是否以指定字符或字符串结尾。 总结来说,string常用方法包括创建和获取字符串、拼接和切割字符串、查找和替换字符串、大小写转换、截取和比较字符串、去除空格和判断开头或结尾等。这些方法可以方便地对字符串进行各种操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战胜.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值