C++基础的不能再基础的学习笔记——标准库类型string

本文详细介绍了C++中string类型的使用方法,包括定义、初始化、读写、比较、拼接及字符处理等内容。通过实例展示了如何利用string类型进行高效的数据处理。

string类型

string类型表示可变长的字符序列,使用string类型必须引入string头文件。

#include <string>
using namespace std;
一、定义和初始化string对象

在字符串字面值中,编译器在每一个字符串字面值的结尾处都加上一个空字符’\0’,例如“fancy”,就变成了”fancy\0”。

定义和初始化string对象有许多方式。

string s1;             //一个空字符串
//以下两种方式是等同的
string s2 = "fancy";   //将字面值"fancy"除空字符外赋值给s2
string s3("fancy");
//以下两种方式是等同的
string s4 = s2;
string s5(s3);

string s6(5,'c');     //s6为ccccc

注意s2和s3的赋值是等价的,但又有不同,s2执行的是拷贝初始化(认为有等号的就是拷贝初始化),而s3执行的是直接初始化

二、string对象的操作
1. 读写string

① 普通读写— 用IO操作符读写string对象

在读操作时,会自动忽略开头的空白(空格符,换行符,制表符),从第一个字符开始读起,到之后第一个空白符结束

string s, ss;

//输入 "    hello world   ", s 为 hello
cout << "请输入" << endl;
cin >> s;
cout << s << endl;

//输入 "    hello world   ", s 为 hello ss 为 world
cout << "请输入" << endl;
cin >> s >> ss;
cout << s << ss << endl;

② 整行读写—用getline(is,s)读取string对象

当我们需要保留输入数据中的空格时,普通的输入符是做不到的,要用getline(is,s)函数来代替输入符,getline(is,s)从is中读取字符串,以换行符为分割,将回车符之前的字符赋给s(不包括换行符)。

string line;

//getline()返回cin,可以判断输入流是否结束或损坏
while (getline(cin, line))
{
    cout << line << endl;
}
2. empty()和size()

① empty()—判断对象是否为空,返回bool类型,空1不空0。

② size()—获取对象长度,注意size()函数返回的是一个无符号整型数,是string::size_type类型的(一个神秘的类型,不深究)。

3. 比较string对象

C++提供的许多运算符也可用于比较两个string类型的对象,在比较过程中,对大小写敏感

== 、!= 运算符用于比较两个string对象是否相同(当且仅当长度和字母完全相同)。
<、>、>=、<= 运算符用于比较两个string对象的大小(按字典序进行比较)。

4. 拼接string

① 两个string对象拼接

string c1 = "fancy", c2 = "666";
string c3 = c1 + c2;
c1 += c3;

② string对象和字面值拼接 保证每个加号左右两边至少有一个string对象

string c1 = "fancy", c2 = "666";

string c4 = c1 + ' ' + c2;     //合法
string c5 = c1 + "love";       //合法

string c6 = c1 + ' ' + "love"; //合法,c1 + ' '运算结束后是一个临时string对象
string c7 = ' ' + "love" + c1; //非法
三、处理string对象中的字符

C++提供了cctype头文件(实际上是C语言中的ctype.h),提供给我们获取字符属性的函数。

范围for语句

范围for语句可以很好的使我们,对string对象的每一字符进行处理。

for( 变量 : 对象)
    操作;

其中,每一次循环,变量都会被初始化为对象的下一个元素值

string cute = "fancy";

for (auto c : cute)     //auto使编译器自动识别c的类型。
    cout << c;
cout << endl;

//小写变大写
for (auto &c : cute)
    c = toupper(c);
cout << cute << endl;

关于string类型,在后续顺序容器中有更详细的解释:
http://blog.youkuaiyun.com/fancynece/article/details/79225748

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值