C++Primer Plus(第六版)第四章学习笔记(1):字符串

1.数组

数组(array)是数据格式,存储多个同类值。创建数组需要声明:
1.数组中元素类型,也可以说数组的数据类型
2.数组中元素个数
3.数组名

数组元素数设定不能是变量
数组类型被称为符合类型,因其用其他类型来创建
数组的用途基于可以单独访问数组中的单个元素,但是设定是访问下标必须有效,下标无效不能被编译器识别出来

·初始化规则

1.只有定义数组时可以使用初始化,之后不能使用,也不能将一个数组直接赋值给另一个数组
2.初始化时可以赋值少于数组长度,此时编译器自动将其他元素设置为0
3.当初始化是数组时括号内为空,则编译器自己计算数组长度
4.CPP利用初始化列表可以省略等号

double earning [4] {1.2e4, 1.6e4,1.1e4}  //okay

2.字符串

字符串是存储在内存中连续字节中的一系列字符,处理字符串分两种:

1.C-style string

因为字符串定义,所以可以被储存在char 类型数组中,这种字符串以"null"空字符结尾,写作"\0".
若以数组声明字符串,最后赋值不带"\0"就不是string
因为一个一个赋值很麻烦,所以可以使用双引号赋值,其自动加入"\0"

char bird[11] = "Mr.cheeps";

注意:字符串常量不能与字符常量互相赋值,类型不同
sizeof()函数可以给出整个数组长度,也就包括空字符
strlen()只给出字符串长度。
然而cin的字符串输入会在遇到空格或回车是结束读取,所以要输入带有空格的字符串是,使用getline()行读取字符串。
getline()读取字符串知道遇到换行符
调用getline()可以使用cin,getline(),该函数两个参数,第一个确定数组名称,第二个参数确定字符数,也可以说是整个数组长度。
同时用get()也可以完成行读取操作,但是get()不会将换行符丢弃,所以要多调用一次cin.get()来完成换行操作。

2.string类简介

ISO/ANSI C++98标准通过了string类的加入。所以可以用string类的对象来存储字符串,而避免使用数组。
使用string类要调用命名空间std。或者直接std::string ,且头文件包含string。

共同点
  • 可以用C-Style字符串初始化string对象
  • 可以用cin来输入存储string
  • cout直接显示string对象
  • 用数组表示法可以显示string对象中每个字母的值
不同点
  • 当你即便声明长度之后,程序在读取过长字符串时依然会将自己的长度进行调整。
赋值、拼接、附加
  • 可以直接赋值,这与字符串数组完全不同,可以将一个string对象的值赋予另一个string对象。
  • 另外拼接的运算符在类设计进行了运算符重载,可以直接使用’+'进行string类的拼接
string 类的I/O
  • getline(cin.str)此处与C-style不同, 没有用cin.getline()因为getline()在C-style中是iostream类的类方法,而cin是类对象。而string中使用的getline是string类中的函数,cin只是作为其中的一个参数。

猜你喜欢

转载自blog.csdn.net/baidu_29452653/article/details/83118450