C++容器之String

C++中的String的常用函数用法总结_YAIMZA的博客-CSDN博客_c++中string的用法

string的初始化

string str//生成空字符串

string s(str)//生成字符串为str的复制品

string s(str, strbegin,strlen)//将字符串str中从下标strbegin开始、
                              //长度为strlen的部分作为字符串初值
string s(cstr, char_len)//以C_string类型cstr的前char_len个字符串作为字符串s的初值

string s(num ,c)//生成num个c字符的字符串

string s(str, stridx)//将字符串str中从下标stridx开始到字符串结束的位置作为字符串初值

s.substr(start,len)//将字符串s中从下标start开始长度为len的字符段输出为新的字符串

char[] charArray = s.toCharArray();//将s中的字符都依次输出到一个字符数组charArray里面

s.reverse(s.begin(), s.end());//反转字符串内的元素

eg:

    string str1;               //生成空字符串
    string str2("123456789");  //生成"1234456789"的复制品
    string str3("12345", 0, 3);//结果为"123"
    string str4("012345", 5);  //结果为"01234"
    string str5(5, '1');       //结果为"11111"
    string str6(str2, 2);      //结果为"3456789"

string类型的数组

string str[]={"abc","def","ghi","jkl","mno","pgrs","tuv","wxyz"};
str[1][2]//输出f

 string的插入操作

三个函数 push_back append insert

string s("abc");
string s1("01234");

//append表示在尾部插入字符或字符串
s.apped(s1);//输出 abc01234
s.append(s1,1,3);//将s1字符串从1开始的三个字符插入 输出abc123
s.append(3,'q');//插入三个相同的字符'q' 输出abcqqq

//push_back 表示在末尾加上单个字符
s.push_back('r');

//insert表示在指定位置插入字符或者字符串
string &insert(int p0,const string &s);//在p0前插入字符串s

string &insert(int p0,const string &s, int pos, int n);//在p0位置前插入字符串s
                                                     //从pos开始的连续n个字符
string &insert(int p0, int n, char c);//在p0前插入n个字符c

void insert(iterator it, const_iterator first, const_iteratorlast);//在it处
                                         //插入从first开始至last-1的所有字符
void insert(iterator it, int n, char c);//在it处插入n个字符c

string的find()函数

找到:返回 第一个字符的索引     没找到:返回   string::npos

size_t find (const string& str, size_t pos = 0) const;  
//查找对象-- string类对象 从索引值pos开始查找(包括索引值)
// 查找不到的话 返回str.npos
size_t find (const char* s, size_t pos = 0) const; 
//查找对象-- 字符串

size_t find (const char* s, size_t pos, size_t n) const; 
//查找对象-- 字符串的前n个字符

size_t find (char c, size_t pos = 0) const;
//查找对象-- 字符

find_first_not_of与find_last_not_of

1、str.find_first_not_of(temp)函数

正向查找在原字符串str中第一个与指定字符串temp(或字符)中的任一字符都不匹配的字符,返回它的位置。若查找失败,则返回npos。(npos定义为保证大于任何有效下标的值。)

  • string str=“abcdefab”;
  • cout<<str.find_first_not_of(‘h’)<<endl;//第二个参数为0,默认从原串下标为0开始查找。第一个a就和带查字符不同,故输出a的下标0。
  • cout<<str.find_first_not_of(“twj”,1)<<endl;//从下标为1开始查,第一个b就和待查子串任一字符不同,故输出b的下标1。

2、str.find_last_not_of(temp)函数

正向查找在原字符串str中最后一个与指定字符串temp(或字符)中的任一字符都不匹配的字符,返回它的位置。若查找失败,则返回npos。(npos定义为保证大于任何有效下标的值。)

  • string str=“abcdefab”;

  • cout<<str.find_last_not_of(‘h’)<<endl;//第二个参数为0,默认从npos逆向查。原串倒数第一个字符b和h就不同,故输出b的小标7。

  • cout<<str.find_last_not_of(“ab”,6)<<endl;//从原串下标为6开始逆向查询,第一个a和待查串中的字符a相同,不符合,故继续逆向比较。f和待查子串任一字符不同,故输出f的下标5。

统计字符数量 

string s="aaaaa";
count(s.begin(),s.end(),'a'); //  5
count(s.begin(),s.begin()+4,'a');// 4 注意s.begin()+4不会包含在内

查看是否为空: empty()

一个注意点:与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*。

C++删除string最后一个字符的几种方法

#include<iostream>
#include<string>
using namespace std;
int main() 
{
	string str;
	str = "123456";
	cout << str << endl;
 
	//方法一:使用substr()
	str = str.substr(0, str.length() - 1);
	cout << str << endl;
 
	//方法二:使用erase()
	str.erase(str.end() - 1);
	cout << str << endl;
 
	//方法三:使用pop_back()
	str.pop_back();
	cout << str << endl;
	return 0;
}

补充:erase()函数

  • erase(size_type pos=0, size_type n=npos);

即从给定起始位置pos处开始删除, 要删除字符的长度为n

  • iterator erase(const_iterator position);

删除迭代器位置处的单个字符, 并返回下个元素的迭代器

  • iterator erase(const_iterator first, const_iterator last);

删除迭代器[first, last)区间的所有字符,返回一个指向被删除的最后一个元素的下一个字符的迭代器.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值