【c++知识点】标准string类

【概念】
1、c++将字符串视为基本数据类型,是c字符串的替代物
2、理解:引号字符串如"hello world"本质是c字符串,c++会自动将其转型为string类型的值
string s="hello world";//可将引号字符串视为string类型的值
2、使用#include<string>调用,位于std命名空间
3、通过操作符=赋值
4、通过操作符+连接字符串,并具备自动扩容能力
string s1="hello",s2="c++",s3;
s3=s1+s2;//如果s1+s2长度超过s3,s3长度会自增
5、字符串具有数组特点(索引、长度、遍历等),且能自动扩容


【初始化】
1、默认构造函数将string对象初始化为空字符串
string nation;//初始化nation为空字符串
2、引号字符串为参数的构造函数,初始化值不以'\0'结束
string name("zhangsan");//初始化为与c字符串"zhangsan"等价的字符串值
3、直接使用赋值操作符=进行初始化
string name="zhangsan";//与上述表达式等价,
4、对象拷贝
string name(str);//name是str(为string对象)的拷贝

【I/O操作】
输出:cout<<s;
输入:
1、注意使用cin>>输入时,只能读入单词(以空白字符定界的字符串),不能读取空白字符(被忽略或停止)。
特点:cin会忽略最初空白字符(空格、tab或换行),在输入非空字符后,再次遇到空白字符时停止读入
理解:若输入□I□love□China!(其中□为空格),则a为I(前后□被删除),b为love(同a)
2、使用getline(cin,line)输入时,支持读取整行
特点:
(1)行中存在的首尾空格,也会成为读取字符串值的一部分;
(2)遇到结束符'\n'时停止;允许自定义结束符getline(cin,line,'?');//遇到?就停止
(3)getline通常视为void函数,但实际返回cin的引用,getline(cin,s1)>>s2;//等价于cin>>s2;
3、使用cin.get一次读取一个字符,
特点:
(1)只能读取char类型的值
(2)可兼容不同的编译器
char next;
do{
  cin.get(next);
}(next!='\n');//以回车操作结束
4、避免同时使用cin和getline,可通过cin.ignore检查输入数据
int n;
string line;
cin>>n;//输入40后回车n=40,回车'\n'留给getline读入
getline(cin,line);\\读取'\n'后停止,实际为空字符串

【字符串处理】
1、拼接
string s="Hello"+" "+"world";//使用操作符+实现重载转换
理解:
(1)字符串常量"Hello"作为c字符串存储(以'\0'结尾),
(2)c++操作符+有多个重载版本(找不到合适重载时,会通过某构造函数进行类型转换)
2、获取长度s.length();//自动获取存储位置数目
3、访问元素s[i];//取得字符串中编号为i的某字符(i从0开始)
(1)[]方式不检查非法索引,检查非法索引使用s.at(i)(i从0开始)
(2)s.substr(pos,length);//从pos位置返回length长度的字符串
4、赋值/修改,使用s[i]或者s.at(i)
str.at(2)或str[2];//修改第3个字符
5、比较
基于词典顺序(ASCII字符表)比较string对象,返回布尔值,字符顺序完全相同才返回true
6、非空判断
s.empty();//返回布尔值
7、插入字符
s.insert(pos,str);//从pos位置插入字符串
8、删除字符
s.erase(pos,length);//从pos位置删除length长度的字符串
9、查找
s.find(str);//返回str在s中首次出现的索引,没有则返回string::npos
s.find(str,pos);//从pos处开始,返回str在s中首次出现的索引
s.find_first_of(str,pos);
s.find_first_not_of(str,pos);

【转换】
1、string对象转c字符串(使用s.c_str()显式强转)
char cstring[]="I love China";
cstring=s;//非法操作!!!赋值操作不适用于c字符串
cstring=s.c_str();//合法
2、c字符串转string对象(c++执行自动类型转换)
s=cstring;//合法
3、字符串转数值类型
stof();stod();stoi();stol();
4、数值类型转换为string对象
s=to_string(3.2);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值