C++的string

  1. C++中初始化string对象有这几种方式
    • string str;      //这样初始化时,str为空字符
    • string str = "bbb";   //将右边的字符串字面值赋值给str字段
    • string str1("AAA");   //用字符串字面值初始化str1
    • string str2(str1);      //将str2初始化为str1的一个副本
    • string str4(5,'a');     //结果为aaaaa,这样可以指定初始化成'a'字符的5个副本

string的常用操作 说明
str.empty() 检查str是否是空字符串,若str为空字符串,则返回true,否则返回false
str.size() 返回str中字符的个数
str[n] string类型其实是一个char数组,所以可以用索引访问指定位置的字符,位置从0开始
str+str1 字符串连接和C#一样,将两个字符串连接成新的字符串,返回新的字符串
str = str1 字符串赋值操作
str == str2 字符串比较相等
str != str2 字符串比较不相等
string str = "hello"+"world"    X 这样是不合法的,字符串的+号相连C++只允许和类型是string的字段相连接,不允许两个字符串字面值直接相连接
str.substr(1,5) 返回从str字符串中第1个位置开始,往后的5个字符组成的字符串,如果只填了位置参数,没有填个数的话,那么默认个数为填的位置参数后面的字符串长度,如果输入的位置参数超过了字符的长度,那么会抛出std::out_of_range的异常
str.insert(2,str1) 在指定位置插入字符串,例如在str字符串的第二个位置,插入str1的字符串
str.begin() 得到指向字符串开头的Iterator
str.end() 得到指向字符串结尾的Iterator
str.rbegin() 得到指向反向字符串开头的Iterator,也就是end
str.rend() 得到指向反向字符串结尾的Iterator,也就是begin
str.length() 和size的函数是一样的,得到的是字符串的大小
str.max_size() 字符串可能的最大大小
str.capacity() 在不重新分配内存的情况下,字符串容器的大小
str.append("aaa") 在字符串的末尾追加字符
str.erase() 删除字符串的内容
str.clear() 清空字符容器中所有内容,和erase函数不一样的是,这个函数返回的是void
str.replace(1,1,"L") 字符替换,例如从字符串str的第一个位置开始往后的1个字符,替换成'L'
str.copy() 字符串拷贝
str.find() 查找,返回基于0的索引号
str.rfind() 反向查找
暂时只记录下目前用得到的字符串的函数,后面用到的其他的,再行补上



#include <string>
#include <iostream>
using namespace std;
int main(void)
{

       string str = "abcdefg";
       //str的第1个位置往后的5个字符组成的子字符串
       string str1 = str.substr(1,5);
       //结果:bcdef
       cout << str1 << endl;
       string str2 = "123";
       //在str字符串的第2个位置插入str2字符串
       string str3 = str.insert(2, str2);
       //结果:ab123cdefg
       cout << str3 << endl;
       str = "abcdefg";
       //在str字符串的第2个位置插入,str2字符串的第1个位置到后面的2个字符
       //这个2当然是包括从第1个位置的字符
       string str4 = str.insert(2, str2, 1, 2);
       //结果:ab23cdefg
       cout << str4 << endl;
       str = "abcdefg";
       //结果同上:ab23cdefg,如果后面字符的个数没有填写,那么代表个数为str2的字符串的长度
       string str5 = str.insert(2, str2, 1);
       cout << str5 << endl;
       str = "abcdefg";
       //在str字符串中第2个位置插入3个':'字符
       string str6 = str.insert(2,3,':');
       //结果:ab:::cdefg
       cout << str6 << endl;
       str = "abcdefg";
       string::iterator it;   //字符串的迭代器
       it = str.insert(str.begin()+1,'-');
       //-
       cout << *it << endl;
       //a-bcdefg
       cout << str << endl;

       system("pause");

       return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值