一、数组
数组声明时,应指出:
1.存储在每个元素中值的类型
2.数组名
3.数组中的元素数(一般不能是变量,下文将介绍如何打破这一限制)
因为数组是使用其他类型(int,char,float等)来创建的,所以它是一种复合类型。C++数组从0开始编号。
数组的初始化
1.只有在定义数组时才能初始化,不能将一个数组赋给另一个数组。如果只对数组的一部分初始化,编译器会自动把其他元素赋0。如果想把所有数组元素赋0,只需将第一个元素赋0即可(或直接让{ }中为空)。
2.如果[ ]中为空,C++将自动计算元素个数(通过赋值的个数)。
3.禁止缩窄转换。
二、字符串
C-风格字符串结尾为空字符 \0。空字符标识字符串结尾,比如cout在输出时读取到\0才结束输出,否则将内存中随后的各个字节解释为要打印的字符,直到遇到\0。
字符串常量
用" ",双引号括起来的字符串叫字符串常量(或字符串字面值)。
这种方法不用显式地表示空字符\0。"A"不等于’A’,‘A’代表A的ASCII码,"A"实际代表字符串所在的内存地址。
字符串可以直接给数组赋值
例
1.char name[15];
name=“Leonard”;
这时,name[0]就是’L’
字符串输入
1.cin使用空白(空格、Tab、回车)确定字符串的结束位置,即cin获取字符数组时只读取一个单词,并自动添加空字符。
2.面向行输入
cin这个类提供面向行的类成员函数:getline()和get(),这两个函数读到换行符才停止。不同的是,getline将读取并丢弃换行符,而get将换行符留在输入队列中。
1.cin.getline() //有两个参数,第一个表示储存此行的数组的名称,第二个是要读取的字符数。
例:
cin.getline(name,18)/要给结尾处的空字符留一个空间,在储存时,丢弃换行符,结尾储存空字符。/
2.cin.get()//与getline类似,只是将换行符保留在输入队列中
例
cin.get(FirstName,18);
cin.get(LastName,18);
此时,第二个get读取时,发现输入队列第一个字符是换行符,于是直接结束读取,第二行就无法读取了。
但如果在中间加入无参数的get
cin.get(FirstName,18);
cin.get(); //读取一字符(即使是换行符)
cin.get(LastName,18);
这一问题得以解决。
在这里,也可以使用cin.get(FirstName,18).get();
cin.get(LastName,18).get();
之所以可以这样连接,是因为第一个cin.get()返回了一个cin对象,这个对象调用了第二个get()。
读取空行后,将设置失效位,后面的输入将被阻隔,但可以用cin.clear();来恢复。如果输入的字符数比指定的多,多余的将被留在输入队列里。
三、处理字符串的新方式——string类
使用string,首先要添加头文件或者。
string来处理字符串和使用数组基本类似。区别在于,可以将string对象声明为简单变量,而不是数组
例:
string str;
string strX=“Leonard”;
程序能够自动处理string的大小。所以,string类型比char数组更安全。char数组只是用来储存字符串,而string类型本身就是一个字符串。
可以将一个string对象赋值给另一个string对象。+号可以将两个字符串连接。
string的其他操作:strcpy(str1,str2);//将str2的值复制到str1。
strcat(str1.str2);//将str2的值接到str1末尾。
strlen(str1);/指出str1的长度。(未初始化的string类长度自动为0)/
需要注意的是,getline只适用于数组。事实上istream类的设计没有考虑对string类的处理(因为那时候还没有引入string类),但仍然可以使用cin>>str;这样的语句。
四、其他形式的字符串字面值
这里只举例
wchar_t n[]=L"hahahaha";
char16_t m[]=u"AAAAAA";
char32_t x[]=U"asdasjfhkjhkjahskjfh";
//注意u和U分别对应char16_t和char32_t,不可混用。
还有一种类型,原始字符串(raw)。
例:
cout<<R"(wahduaw " "asdasbjk"\n")"
这时\n不表示换行符,而是表示它本身,也就是屏幕上会显示 \n。
其实,在raw中,定界符可自定义,在"和(之间加任意基本字符。但是注意,首尾必须一致,如
cout<<R"saa(asjkdlaskjd)")saa"
前缀R也可以和u,U等前缀结合,R可在前也可在后,如RU,uR都可以。
来源:CSDN
作者:Chérie
链接:https://blog.csdn.net/weixin_43484281/article/details/104766936