C++ Primer-------string

前提:阅读C++ Primer 第五版笔记

string类型表示可变长的字符序列。

头文件:<string>
命名空间:std::string

  1. 定义和初始化string对象
string s1;				//默认初始化,直接构造,s1是空字符串
string s2=s1;     //s2是s1的副本,调用拷贝构造函数
string s2(s1);      //直接构造
string s3="hi"    //拷贝初始化
string s3("hi");        //直接构造
string s4(10,'c');    //直接构造  s4内容是'cccccccccc'
string s4=string(10,'c');//拷贝构造
  1. 赋值

s1=s2;

  1. 读写string对象
string s;
cin>>s;				//将string对象读入s,遇到空白停止
cout<<s<<endl;  //输出s

string对象会自动忽略开头的空白(空格符,换行符,制表符等)并从第一个真正字符开始读取,直到下一个空白。
4. 使用getline读取一整行

getline(cin,string)   

函数从cin输入流中读入内容,直到遇到换行符(换行符也被读取),然后将内容存入string对象中(不存换行符)。如果第一个字符就是换行符,则结果为空字符串。
5. emptysize

s.empty() ;   // 若s为空,则返回true,否则返回false

size成员函数
size()返回的是一个无符号整型,size_type因此在大小对比时,应使用无符号整型数据类型。
用法:

s.size(); //返回s的长度

例如:

int n=-1;
if(s.size()<n);//由于负整数会自动转换成无符号整型,也就是一个很大的值,所以该语句几乎都为`true`

  1. 比较string对象
    规则:
    1. 若两个string对象长度不同,且两个string对象相应位置的字符相同,则较短的对象小于较长对象。
    2. 对比两个string对象中相应位置第一个不同的字符,就是比较结果。

  2. 字符串或字符与string相加
    标准库允许把字符串或字符转换成string对象,所以需要string对象的地方可用这两个类型代替。
    注意:当把string对象和字符、字符串类型混在一条语句使用时,必须确保加法运算符两个运算对象至少有一个是string。

string s1=s+",";  //正确
string s2=s1+'c'+"c";  //正确,因为string(s1+'c')返回一个string然后+“c”
string s3="he"+","+s2;  //错误,因为前两个先运算,都是字符串
  1. 迭代string对象内元素
    方法1(c++11):使用for语句
for(declaration: expression)
	statement

其中,expression是一个对象,表示一个容器类型,包括string。declaration负责定义一个变量,该变量将被用于访问容器内的元素。每次迭代,其内容都会初始化为下一个元素内容。

string s("some");
for(auto c:s)
	cout<<c<<endl;     //将string  s中的元素遍历,并输出

若需要改变元素值,则必须把循环变量定义成引用类型

string s("some");
for(auto &c:s)
	c=toupper(c);  //将s中的每个元素变成大写

方法2:使用下标

if(!s.empty())
	cout<<s[0];  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值