c++(19)标准库类型string( 一 )

标准库类型string表示可变长字符序列。

使用string类型必须先包含string头文件。

#include <string>

using namespace std::string;


定义和初始化string对象
string s1; 默认初始化,s1的值为空串

string s2(s1); s2是s1的副本

string s3 = s2; s3是s2的副本

string s4 = "value"; s4是字面值"value"的副本,除了字面值最后的空字符之外

string s5("value); s5是字面值"value"的副本,除了字面值最后的空字符之外

string s6(n,'c') s6是由连续n个的字符c组成的串

其中使用等号=的是拷贝初始化,其它为直接初始化。

string对象上的操作

一个类除了要定义初始化其对象的方式外,还要定义对象上所能进行的操作。

其中类既能定义通过函数名来调用的操作,也能定义<<,+等各种运算符在该类对象上的新含义。


string对象常用的几种操作

ostream << s               将s写到输出流ostream当中,结果返回

ostream istream >> s 将s写到输入流istream当中,结果返回istream 其中,忽略串之前的空格,遇到空格结束

getline(istream,s) 从istream中读取一行赋值给s,返回istream 读取一行字符串的过程中,不会忽略空格

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的字符是否完全相等,相等返回true,否则返回false

s1 != s2 相等性判断大小写敏感

<,>,<=,>= 按照字符在ascii码表的顺序进行比较


string::size_type类型 s.size()返回值类型不是int或者unsigned,而是string::size_type类型。


在使用string对象相加的时候,注意!!

可以使用字符串字面值代替string相加如:

string s1;

string s2 = s1 + "hello";

但是必须确保+号两端的对象必须有一个是string。

string s3 = "a" + "b" + s2;这种就是错误的

string s4 = s2 + "a" + "b";是正确的。

其原理和学习标准输入输出中使用<<和>>连续输入或者输出是一样的。

string s4 = (s2 + "a") + "b";

string s3 = ("a" + "b") + s2;

s3的运算过程中无法把字面值直接相加。

注意!!因为某些历史原因,也为了与c语言相容,c++语言中的字符串字面值并不是标准库类型的string类型。



处理string对象中的字符

头文件cctype头文件中定义了一组标准库函数处理这部分工作(处理string对象中的字符)。

isalnum(c) 当a为 字母或者数字 时为真

isalpha(c) 字母

iscntrl(c) 控制字符

isdigit(c) 数字字符

isgraph(c) 非空格可打印字符

islower(c) 小写字母

isprint(c) 可打印字符

ispunct(c) 标点符号

issapce(c) 空格

isupper(c) 大写字母

isxdigit(c) 十六进制数字

tolpwer(c) 如果c是大写字母,输出对应的小写字母。否则原样输出c

toupper(c) 如果c是小写字母,输出对应的大写字母。否则原样输出c

注意!!

c++标准库除了定义c++语言特有功能之外,也兼容了c语言的标准库。

c语言的头文件形式形如name.h,c++则将这些头文件明明为cname.即去掉了.h后缀,且在文件名name前加上了字母c。

不同之处除了头文件名之外,还有一点就是,cname命名的头文件中定义的名字都在命名空间std内,而name.h命名的头文件则不然。

除了这两点之外,c和c++头文件的内容是完全相同的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值