C++标准库的string类型

string的使用

1. string的定义和初始化

使用string要使用<string>头文件

	//1. 默认初始化为空
	string str1;    //str1 = "\0"
	
	//2. 使用拷贝初始化
	string str2 = str1;
	
	//3. 使用构造函数
	string str3(“values”);
	
	//4. 连续多个相同字符,该方法与vector相似
	string str4 (5, 'm'); //连续5个m, str4 = "mmmmm"
	
	//5. 使用迭代器复制范围
	string str(b, e); //b e是迭代器string::iterator,复制[b, e)的内容,是左闭右开
	

2. string的操作

string 输入输出

    //1. 读取string
    string str;
    cin >> str;   //将字串写入str,但中间不能出现空格。否则会分割开
    
    //2. 读取一整行字符串,包括空格
    getline(cin, str);
    
    //3. 输出字符串
    cout << str << endl;
    
    //4. 使用push_back()往字符串后加字符,类似stack
    str.push_back('a'); //在str后加字符‘a’
	

string 的属性

    string str = "abdcdfe";
    
    //1. str.size(), 获取str的字符个数
    int len = str.size();
    
    //2. str.empty().返回str是否为空,str为空返回true, 否则返回false
    bool isEmpty = str.empty()//3. pop_back(),删除str的最后一个字符,没有返回值
    str.pop_back(); 
    
    //4. str.capacity(),str的当前容量,与size()不同
    int cap = str.capacity();
    
    //5. str.resize(),用来增大或缩小容器
    str.resize(15); //扩大到15个

.size()与.capacity()是不同的,.size()是当前字符串中的字符个数,而.capacity()是当前字符串的总容量,系统分给该字符串的内存,size要超过capacity时,系统会自动扩容,重新分配内存空间。

string 的运算符重载

    ==>=><<=!= 都可以用来比较两个string
    + 可以连接两个字符串
    如:
    string str1("123");
    string str2("456");
    str1 = str1 + str2;    //str1 = "123456";

3. string的访问方式

string的访问方式主要有两种:下标和迭代器,一般使用下标访问就可以满足大部分需求。

  • 使用下标访问,类似数组:
   string str = "1243455543";
   for(int i = 0; i < str.size(); i++){
   		cout << str[i];
   }
  • 使用迭代器:
	string str = "25sdfsfefe";
	string::iterator it; //迭代器
	for(it = str.begin(); i != str.end(); i++){
		cout << *i;   //记得要解引用
	}

	//也可直接使用auto
	for(auto i = str.begin(); i != str.end(); i++){
		cout << *i;
	}

4. 处理string中的字符

判断string中字符的主要函数,在头文件中

  1. isalpha(ch) //当ch是字母返回truew
  2. isdigit(ch) //判断数字
  3. isspace(ch) //判断空格
  4. islower(ch) //判断小写字母
  5. isupper(ch) //判断大写
  6. isxdigit(ch) //判读十六进制

字符转换

  1. tolower(ch) //大写字母换成小写,小写不变
  2. toupper(ch) //小写换大写,大写不变

5. 额外的string操作

下面的操作要注意下标范围
用string来拷贝const char*类型:

   const char* str = "1559666666";

   string str1(str, n); //str1是str指向的数组中前n个字符的拷贝[0, n-1]

   string str2(str, pos);  //str2是str从下标pos开始的字符的拷贝[pos, str.size())

   string str3(str, pos, len);  //相对于2加了长度[pos, pos + len);

substr操作:

   str.substr(pos, n); //返回一个string,截取范围[pos, pos + n);

6. 改变string的其他方法

  1. assign、insert和erase
    assign是替换当前字符串的内容;
    insert是插入字符;
    erase是删除字符。
	//1.assign用法: s.assign(args), args是要替换的字符,也可改为(pos, len)
	string s("123");
	const char *cp = "abc de";
	s.assign(cp, 6);  //s = "abc de";
	
	//2.insert用法: s.insert(pos, arg), pos可以是下标或者迭代器,
	//是插入当前位置的前面一个位置,arg是指定的字符,前可以加数量n。
	//使用迭代器时会返回指向新添加的第一个元素的迭代器
	string s;
	s.insert(s.size(), 5, 'a'); //在末尾插入5个字符‘a’
	
	//3.erase用法: s.erase(pos, len), 也可以用两个迭代器s.erase(e, d),此时
	//会返回e这个迭代器,即删除[e, d)范围的值
	s.erase(pos, len);//删除pos开始后面的len个字符。
	
  1. append和replace函数
	//1. append函数,类似push_back(),但数量不同
	string s = "123";
	s.append("abc");  //s = "123abc"
	
	//2. replace函数: s.replace(range, arg), range是范围,
	//可以是下标和长度或者一对迭代器
	string s = "123";
	s.replace(1, 1, "56"); //s = "1563";

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值