目录
4.2.4 每次读取一行字符串输入 / cin getline get
4.1.1 初始化数组
初始化数组 举例
int shuzuming[3] = {14, 3, 5};
如果没有初始化(没有大括号),元素值是以前驻留(残存)在该内存单元的值。
{
4.3.4中提到
未初始化的字符,因内容不确定,故结尾的空字符位置也不确定,使用strlen()计算char数组长度时将是不确定的。
}
sizeof得到字符数(不是元素数),即使是对数组。
4.1.2 数组初始化规则
只有定义数组时可以初始化,此后不能整个数组一起赋值了(但可以用下标给每个元素单独赋值),也不能将一个数组赋给另一个数组。
{
4.3.3中提到 :
strcpy(charr1, charr2)将charr2复制到charr1中
strcat(charr1, charr2)将charr2加到charr1后面
}
若初始化的值少于数组里元素数目,则从左到右依次赋值,其余为0.
如果初始化时 [ ] 为空,编译器将自己计算元素个数。
4.1.3 c++11数组初始化方法
初始化数组可以忽略等号。
int shuzuming[3] {14, 3, 5};
有大括号,但大括号内为空,则数组内元素均为0.
列表(/数组)初始化禁止缩窄转换。
4.2 字符串
char cat[5] = {'f', 'g', 'h', 'j', '\0'}; //是字符串
char cat[5] = {'f', 'g', 'h', 'j', 'k'}; //不是字符串
char 数组 以 \0 结尾(向上箭头)
字符串常量 字符串字面值(向下箭头)
char fish[5] = "fish";
第5个字符是‘\0’
4.2.2 strlen
strlen()计算 char数组中 可见字符的个数,(也就是不计算 \0),使用strlen要引用头文件ctring
strlen从数组第一个字符开始计算,直到遇到 \0
4.2.4 每次读取一行字符串输入 / cin getline get
面向行的输入:getline()
用回车键确定输入结尾 cin.getline(),它读取但不保存换行符,储存时用空字符代替换行符
有两个参数,第一个是用来储存的数组的名称,第二个参数是要读取的字符数。如果第二个参数是20,则该函数最多读取19个字符,余下空间用来储存空字符。
面向行的输入:get()//两个参数
cin.get()不读取换行符,使其保留在输入流中
有两个参数,第一个是用来储存的数组的名称,第二个参数是要读取的字符数。如果第二个参数是20,则该函数最多读取19个字符,余下空间用来储存空字符。
变体:cin.get() //不带任何参数
可读取下一个字符,即使是换行符。
可以用来处理换行符,为读入下一行做准备。
注:cin >>...... 会把换行符留在输入流中
{
6.7中提到
对象cin本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则被转换为false
6.11第二题中用到
}
4.3 string类简介
要使用string需包含头文件 string
初始化时,与数组初始化相比,删去[...]即可
string的长度编译器自动设置,若未初始化,则长度自动设为0
4.3.2 string基础操作
string可以使用 = 将一个string对象赋给另一个string
可以使用+将两个string类合并
4.3.3 string 类的其他操作
计算string元素数
名字.size()
#include<iostream>
#include<string>
using namespace std;
int main()
{
string asd = "abcd";
cout << asd.size();
//输出结果是4
return 0;
}
//此处asd是一个string对象
//size()是string类的一个方法
4.3.4 string类I/O
输入in:
getline(cin, 名字);
这个getline()不是类方法。它将cin作为参数,指出应到哪里读取输入。
同时,可以将cin和cout用于string对象。
4.3.5其他形式的字符字面值 / 原始字符串
原始字符串 R"!@#( 一些文本)!@#"
!@#可以时其他符号但要保持顺序一致