C++ string

初始化string对象

string s1  //默认初始化,s1是一个空串
string s2(s1)  //拷贝初始化,等价于s2=s1
string s3("value")  //直接初始化
string s4="value"  //拷贝初始化
string s4(n,'c')  //直接初始化,把s4初始化为n个字符c组成的串

读写string对象

在执行读取操作时,string对象会自动忽略开头的空白,从第一个字符读起,直到遇到下一个空白为止:

int main()
{
string s;
cin>>s;
cout<<s<<endl;
return 0;
}

如果输入“ hello word”
则会输出“hello”

如果想要保留字符串中间的空白符,则要使用getline函数,getline只要一遇到换行符就结束,哪怕一开始输入的就是换行符也是如此:

int main()
{
string s;
getline(cin,s);
cout<<s<<endl;
return 0;
}

如果输入“ hello word”
则会输出“ hello word”

比较string对象

可以用相等性运算符=和!=比较两个string对象是否相等,如果想等,则意味着他们的长度和所包含的字符全部相等;还可以用关系运算符<、>、<=、>=比较两个string对象的大小:

string s1="hello";
string s2="hello word";
string s3="mn";

易知s1 < s2,s2 < s3

两个string对象相加

两个string对象相加得到一个新的tring对象,它的内容是将两个string对象连接起来:

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

string对象还可以和字面值直接相加,但必须保证每个加法运算符的两侧至少有一个是string:

string s1="hello",s2="world";
string s3=s1+","+s2;  //s3的内容是hello,world
string s4="hello"+",";  //错误,不能把字面值相加
string s5=s1+","+"world";  //正确,s1+","是一个string对象,这个string对象再与"world"相加

处理string对象中的字符

1、使用范围for语句处理每个字符

string s="Hello World";
decltype(s.size()) cnt=0;
for(auto c:s)  //对于s中的每个字符
if(isupper(c))  //如果是大写字母
++cnt;
cout<<s<<"中有"<<cnt<<"个大写字母"<<endl;

输出结果是:
Hello World中有2个大写字母

2、使用范围for语句改变字符串中的字符

string s="hello world";
for(auto &c:s)  //注意c是引用
c=toupper(c);  //c是一个引用,因此赋值语句改变s中的字符的值
cout<<s<<endl;

输出结果是;
HELLO WORLD

3、使用下标处理一部分字符
下标运算符[]接收的输入参数是string::size_type类型的值,这个参数表示要访问字符的位置;下标从0开始计起最后s[0]是第一个字符,s[s.size()-1]是最后一个字符:

if(!s.empty())   //确保有字符输出
cout<<s[0]<<endl;  //输出第一个字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值