STL之string用法详解

2.1 string容器介绍

string也属于STL常用容器之一,因此vector(参考博客)中的大部分方法与迭代器都适用于string容器。string容器用于保存字符串,使用一组连续的内存单元来存放字符串中的每个字符,因此也支持随机访问与存储。c++中string完全可以替代字符数组和字符指针,下面主要介绍string容器独有的方法。

2.2 string容器的创建与使用

2.1.1 包含头文件

#include<string.h>  //c语言中的库文件,提供了各种字符串操作函数
#include<string>    //c++中提供了string

2.1.2 string的构造与访问

/***string的构造方法***/
char ch[30];
char ch1[30] = "laina";
char* ch_ptr = ch1;
string str = "laina";						//默认构造方法
string str1(str);							//初始化为str的副本
string str2("baga");						//初始化为传入字符串的副本
string str3(2, 'b');						//初始化为2个‘b’的副本
string str4(ch_ptr, 3);	    				//初始化为所指数组的前n个字符
string str5(str1, 2);       				//初始化为str1从下标2开始的字符副本
string str6(str1, 2, 3);					//初始化为str1从下标2开始的3个字符
string str7(str.begin() + 1, str.end());  	//使用迭代器初始化

string构造方法

string str = "laina";
string str1 = "hello world!\n";
cout<<"print str1: ";
for(int i = 0;i<str1.length();i++){
    cout<<str1[i];
}

在这里插入图片描述

3.1.2 string字符串拼接

  • 使用“+=”进行拼接

  • 使用append进行追加:str.append(str2,0,3) //从第0个字符开始截取,截3个字符。

  //第一种拼接方法
  string str_temp = str + " " + str1;         
  cout << "str + \" \" + str1 : "<< str_temp << endl;
  //第二种拼接方法
  str_temp.append(str1);
  cout << "str.append(str1): " << str_temp << endl;
  str_temp.append(str, 3, 2);
  cout << "str.append(str, 3, 2): " << str_temp << endl;   //从序号为3个字符开始截取,截2个字符。

3.1.3 string字符串拼接

//字符串查找
int pos = str.find("na");      //没有该字符则返回s.npos(int)
cout << "position of na:\t\t" << pos << endl;
//字符串的替换
str1.replace(pos, 4, "naa");       	//从表示从str1[pos]的下一个字符开始,将后面的4个字符替换为“naa”

在这里插入图片描述

3.1.4 string字符串比较

//逐位比较字符串的ascii码,完全相同返回0,假设第i位不同,若str[i]>str1[i]返回1,否则返回-1
cout<<"strcmp(str1.c_str(), str.c_str())= "<<strcmp(str1.c_str(), str.c_str())<<endl;

在这里插入图片描述

3.1.5 string字符串截取

str1 = str1.substr(2,5); 		//从str1[2]开始截取5个字符

在这里插入图片描述

3.1.6 string迭代器的使用

#include<iostream> 
#include <string>
using namespace std; 
int main()
{
 string ss("zhoujielun");
 string s(ss.rbegin(), ss.rend());
 cout << endl;
 cout << "zhoujielun的逆序: " << s << endl;
 return 0;
}

在这里插入图片描述

3.1.7 string的一些其他方法

//strnlen(str,n) =>比较str的实际长度与n值,若length<n,则返回实际长度,否则返回n值
cout << "strnlen(str.c_str(), 3): " << strnlen(str.c_str(), 3) << endl;  
//strchr(str,char s) =>返回第一次出现字符s的指针
cout << "strchr(str.c_str(), 'a'): " << strchr(str.c_str(),'a');

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值