标准库类型string

整理自C++Primer PP75-83

1.使用string类型必须包含以下头文件

#include <string>
using  std::string;

2.定义和初始化string对象

格式初始化string对象的方式
string s1默认初始化,s1是一个空串
string s2(s1)s2是s1的副本
string s2=s1等价于s2(s1),s2是s1的副本
string s3(“value”)s3是字面值”value”的副本,除了字面值最后的空字符外
string s3 = “value”等价于s3(“value”),s3是字面值”value”的副本
string s4(n, ‘c’)把s4初始化为由连续n个字符c组成的串

拷贝初始化和直接初始化
拷贝初始化:使用(=)初始化一个变量 string s = “hiya”;
直接初始化:不使用等号string s (“hiya”) ;
当初始值只有一个时,使用直接和拷贝都可以;
如果初始值有多个,一般来说只能使用直接初始化的方式。

3.string对象上的操作

格式string的操作
os<<s将s写到输出流os当中,返回os
is>>s从is中读取字符串赋给s,字符串以空白分隔,返回is
getline(is,s)从is中读取一行赋给s,返回is
s.empty()s为空返回true,否则返回false
s.size()返回s中字符的个数
s[n]返回s中第n个字符的引用,位置n从0计起
s1+s2返回s1+s2连接后的结果
s1=s2用s2的副本代替s1中原来的字符
s1==s2如果s1和s2中所含的字符完全一样,则他们相等;区分大小写
s1!=s2不相等
<, <=, >, >=利用字符在字典中的顺序进行比较,区分大小写

读取string对象

cin>>s;

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

cin>>s1>>s2;//把第一个输入读到s1中,第二个输入读到s2中

使用getline读取一整行
getline遇到换行符停止(注意换行符也被读进来了),然后把所读内容存到string对象中(不存换行符)。
比较string对象的两个规则
1.如果两个string对象的长度不同,而且较短string对象的每个字符都与较长string对象对应位置上的字符相同,就说较短string对象小于较长string对象;
2.如果两个string对象在某些对应的位置不一致,则string对象比较的结果是string对象中第一对相异字符比较的结果。
基于范围的for语句
如果想对string对象中的每个字符做点什么操作,目前最好的办法是使用C++11新标准提供的一种语句,范围for(range for)语句。这种语句遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是:

for(declaration: expression) 
statement

其中,expression部分是一个对象,用于表示一个序列。
declaration部分负责定义一个变量,该变量将被用于访问序列的基础元素。每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值。

string str(“some”); 
for (auto c : str) //对于str的每个字符 
cout << c << endl; //输出当前字符,后面紧跟一个换行符

通过使用auto关键字让编译器决定变量c的类型,这里c是char,每次迭代,str的下一个字符被拷贝给c,因此该循环可以读作”对于字符串str中的每个字符c“执行某某操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值