C++ string使用详解看这一篇就够了


string可表示变长的字符串。使用string类型必须包含string头文件,string定义在std中。

定义和初始化string

string s1;//默认初始化,空串
string s2(s1)//s2是s1的副本
string s3("vaiue")//s3是字面值的副本,无空字符串结尾
string s4(n,'c');//连续n个字符c组成的字符串

直接初始化和拷贝初始化
方便记,通过等号初始化的是拷贝初始化,通过自己的函数初始化的是直接初始化。

string对象上的操作

string s;
cin>>s;

string对象会自动忽略开头的空白,从第一个真正的字符串开始读起,直到遇到下一个空白为止。

读取未知个数的字符串

while(cin>>word){
...
...
}

使用getline()读取一整行
读取一整行,包括空白,不包括换行符。getline(cin>>s).
wihle(cin>>s){

}
string的empyt和size操作

string s(10,'c');
auto 1=s.size();//字符串的长度
bool b=s.empty();//s是否为空

string::size type
size函数的返回值为string::sizetype,无符号整数类型,可以存放下任何string的大小。
尽量使用auto和decltype来定义接收它的变量。避免int和无符号数的混用。
比较string对象
原理:逐一比较,大小写敏感。
支持>,<,==,<=,>=等
string对象的相等意味着长度和包含的字符完全一样。
先比较对应位置字符,后比字符串长度。

为string赋值

string st1(10,'c'),st2;
str1=st2;//用st2副本替换st1的内容。

两个string对象相加
两个string对象相加是个新的string对象。

string s1="hello",s2.=."world\n";
string s3=s1 + s2;//s3的内容是hello,world\n

字面值和string相加
字面值:"hel1o”,“world”…
相加时,加号两侧至少有一个是string。
字符串(string)和字面值是不同的对象(c语言遗留)

处理string对象中的字符( c )

isalnum(c);//字母或数字为真
isalpha(c);//字母为真
isdigit(c);//数字为真
islower(c);//小写为真
ispunct(c);//标点为真
isspace(c);//空格为真
tolower(c);//若大写,转小写
toupper(c);//若小写,转大写

使用c++版本的c标准库头文件了,不要用.h

使用范围for循环处理每个字符串

string str("some string");
for(auto c : str){
	cout<<c<<endl;
}

将str中的字符拷贝给c,每次循环开始创建c,结束销毁(c = str[i])

使用for语句改变字符串中的字符
如果想要改变字符串中的字符,必须把循环变量定义为引用值

string str("some string");
for(auto &c : str){
	c = toupper(c);
}

将str中的字符和c绑定,每次循环开始创建c,结束销毁(auto &c = str[i])
可以使用下表随机访问字符串字符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值