标准库头文件:string

1.初始化

string str1 = "ab\0cd";   //"ab"
string str2("ab\0cd");   //"ab"
string str3(4, '=');//====
string str3(str2, 2);//将str2从第三个字符到最后一个字符赋给str3
string str4(str2, 1, 5);//将str2从第二个字符开始后的5个字符赋给str4
string str5("C-style string", 5);//将字符串的前5个字符赋给str5
string str6("C-style string", 1, 5);//将字符串的1后的5个字符赋给str6)
string str7{"ab\0cd", 5}; //"ab\0cd"
string str8{a, 5}; //如果a是堆上申请内存的char*指针,str7是开辟了另一块内存并将a的内存拷贝到其中,所以a的内存要自己释放
string str9({ 'C', '-', 's', 't'});//initializer_list赋值

2.类变量

static const string::npos = -1;

3.类方法

str1.at(2);//str1第二个字符
str1[2];//str1第二个字符,支持修改字符,与C的字符串不同,C的字符串本质是const的
str1.front();//str1的首元素
str1.back();//str1的尾元素
str1.push_back('a');//在末尾添加一个字符
str1.pop_back();//弹出末尾字符
str1.data();//str1的数据指针,类型是const char*
str1.c_str();//str1的char形式,类型是const char*
str1.empty();//是否为空
str1.length();//长度,同size()
str1.size();//大小,同length()
str1 += str2;//在str1的末尾添加str2
str1.compare(str2);//返回str1-str2的值,a<z,A<a
str1.find(str2);//在str1中查找子串str2,找到返回下标,没找到返回-1,即std::string::npos,返回值类型是size_type,是unsigned类型,-1是signed类型
str1.find(str2, 3);//从str1的3位置查找子串str2,找到返回下标,没找到返回-1
str1.rfind(str2);//在str1中从后往前查找子串str2,找到返回下标,没找到返回-1
str1.rfind(str2, 3);//从str1的3位置从后往前查找子串str2,找到返回下标,没找到返回-1
str1.insert(0, 2, 'h');//在0位置插入2个字符
str1.insert(2, "h");//在2位置插入h,注意h是双引号,类型是const char*,上面的insert是char
str1.insert(2, "is an example.", 0, 5);//在2位置插入字符串,起始为0位置,插入5个字符
str1.append(3,'*');//在末尾添加三个字符,等同于str1+“***”
str1.append(str2);//在末尾添加另一个字符串
str1.append(str2, 1, 3);//在末尾添加str2第1位置的3个字符
str1.append("C-style string", 5);//在末尾添加字符串的前5个字符
str1.append(str2.begin(), str2.end());//范围迭代器添加
str1.append({ ' ', 'l', 'i', 's', 't' });//initializer_list添加
str1.assign(4, '=');//将str1赋值为4个=
str1.assign(str2);//将str2赋给str1
str1.assign(str2, 0, str2.length()-1);//将str2除最后一个字符赋给str1
str1.assign("C-style string", 5);//将字符串的前5个字符赋给str1
str1.assign({ 'C', '-', 's', 't'});//initializer_list赋值
str1.erase(1,2);//删除1位置开始的两个字符
str1.erase(find(str1.begin(), str1.end(), ' '));//删除迭代器指向的字符
str1.erase(str1.begin(), str1.end());//清空str1
str1.replace(1, 5, "red");//将str1第1位置之后的5个人字符用red代替
str1.replace(str1.begin(), str1.begin()+3, 1, '*');//将str1从0位置到3位置用1个*来代替
str2 = str1.substr(4);//取str1前4个字符
str2 = str1.substr(1,4);//取str1第1位置开始的4个字符
str1.resize(20, '*');//将str1改变size为20,多余位置用*填充,如果源字符串多余20,则截取前20个字符
str1.clear();//清空
str1.find_first_of(str2);//在str1中查找str2中的字符,返回第一个满足的下标,没找到返回-1
str1.find_first_of(str2,5);//从str1的0位置到第5位置查找str2中的字符,返回第一个满足的下标,没找到返回-1
str1.find_first_not_of(str2);//查找str1中第一个不符合str2中字符的位置
str1.find_first_not_of(str2, 5);//从str1的0位置到第5位置查找第一个不符合str2中字符的位置
str1.find_last_of(str2);//查找str1中最后一个符合str2中字符的位置
str1.find_last_of(str2, 5);//从str1的0位置到第5位置查找最后一个符合str2中字符的位置
str1.find_last_not_of(str2);//查找str1中最后一个不符合str2中字符的位置
str1.find_last_not_of(str2, 5);//从str1的0位置到第5位置查找最后一个不符合str2中字符的位置
str1.reserve(10);//将str1的容量变成10
str1.capacity();//返回str1的容量
str1.copy(arr, sizeof(arr));//将str1的内容拷贝到arr中,arr要有足够的空间
str1.swap(str2);//交换两个字符串
string::iterator it = str1.begin();
string::const_iterator c_it = str1.cbegin();
string::reverse_iterator r_it = str1.rbegin();
string::const_reverse_iterator cr_it = str1.crbegin();
str1.max_size();//系统存储string最大的大小
str1.shrink_to_fit();//回收string内多分配的内存
str1.get_allocator();//返回分配器

4.常用操作

getline(cin, str);//将输入写入到str中
int stoi( const string& str );//将str转换成整数,要求首字符必须是数字
long stol( const string& str );//将str转换成long型,要求首字符必须是数字
long long stoll( const string& str );//将str转换成long long型,要求首字符必须是数字
float stof( const string& str );//将str转换成float型,要求首字符必须是数字
double stod( const string& str );//将str转换成double型,要求首字符必须是数字
long double stold( const string& str );//将str转换成long double型,要求首字符必须是数字
string to_string( int value );//将value转成string
string to_string( long value );//将value转成string
string to_string( long long value );//将value转成string
string to_string( unsigned value );//将value转成string
string to_string( unsigned long value );//将value转成string
string to_string( unsigned long long value );//将value转成string
string to_string( float value );//将value转成string
string to_string( double value );//将value转成string
string to_string( long double value );//将value转成string

5.不常用操作

unsigned long stoul( const string& str );//将string转成unsigned long
unsigned long long stoull( const string& str );//将string转成unsigned long long

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值