1.3 数据处理

1. const限定符与#define.  例如const int MONTHS=12将常量MONTHS初始化为12, 其值就被固定了, 编译器将不允许再修改该常量的值. 容易知使用#define MONTHS 12也能达到同样的效果, 但const比#define要好一些. 首先, const能够明确常量的数据类型; 其次, 可以通过C++的作用域规则将常量限定在特定的函数或者文件中; 第三, 可以将const用于更复杂的类型, 如数组和结构, 而#define却不能这样使用.

2. 类型转换. 将0赋给bool变量时, 0将被转换为false; 而非零值将被转换成true.

3. 字符串. 字符串有一天特殊的性质: 以空字符/0结尾, 必须最用用一个长度来存储空字符. 例如char a[10], 最多只能存9个用到的字符, 最用一个空间要用来存空字符. 另一种方法来初始化字符串, 可让编译器自动添加结尾的空字符. 例如char a[10]="hello", 那么a[0]~a[4]分别为h,e,l,l,o; a[5]~a[9]全部为空字符/0. 我们要防止出现分配空间不够的情况, 比如说char b[5]="hello", 没有用来存储空字符的空间, 所以这个语句是非法的, 空间不够. 另外字符串常量和字符常不是同一个概念, 字符串常量用双引号表示一个字符, 字符常量用单引号, 表示字符的ASCII码. char a="S" 这个语句是非法的, char a='S' 这个语句是合法的.

4. 拼接字符串. cout<<"I Love "<<"You!" 第一个字符中结尾的空字符被第二个字符的第一个字符取代.

5. 输入字符串. char name[10]; cin>>name; 那么最多输入9个字符作为name.

6. 面向行的输入, getline读取指定数目的字符或遇到换行符时停止读取, 并丢弃换行符. 例如读取将姓名读入到一个包含20个元素的name数组中, 那么函数最多读取19个字符, 用法为cin.getline(name,20). getline函数可以拼接起来使用cin.getline(name,20).getline(name2,20).

7. 面向行的输入, get与用法与getline类似, 但是get并不丢弃换行符, 而是将其留在输入队列中, 如果两次连续调用get(), 例如cin.get(name,20); cin.get(name2,20); 由于第一次调用后, 换行符将留在输入队列中, 因此第二次调用时看大的第一个字符便是换行符, 此时get()认为已经达到行尾而终止读入. get()有另一种变体, 使用不带任何参数的cin.get()调用可读取下一个字符(即便是换行符), 可用它来处理换行符. 则可以这样处理cin.get(name,20); cin.get(); cin.get(name2,20); 当然也可以使用两个类成员函数(类cin的成员函数)拼接起来使用, 例如cin.get(name,20).get(); cin.get(name2,20);

8. string类, 需要包含#include<string>, string对象和字符数组之间的主要区别是, 可以将string对象声明为简单变量, 而不是数组. 例如string str1; 创建一个空的string对象, string str2="father"; 创建一个字符串实体. string对象可以合并, 赋值. 例如string str1, str2, str3; str1="hello"; str2="world"; str3=str1+str2="helloworld";

9. string类的其他操作, 确定字符串长度. 已知string对象str1, 则str1的长度可以通过string类的方法size()确定, 那么str1.size()表示str1的长度. 对于字符串数组, 我们可以通过strlen函数确定, 例如对于字符串name1[20], 那么他内部实际长度(即除去空字符)为strlen(name1). 当然要使用strlen, 最好包含头文件#include<string.h>或者#include<cstring>.

10. C++结构体. 类似于C语言的结构体, 但有一点不同, 在定义结构体后, 声明结构体变量时C语言要求有struct关键字, 但是C++可以省略struct关键字. 例如定义结构体
      struct student
     {
          char name[20];
          int age;
      };
声明的时候C语言要求为struct student stu1; 而对于C++而言只需要student stu1就可以了, 这样也贴近C++的面向对象思想, 就好想新创建了一个类一样. 声明结构体之后, 可以对结构体进行初始化和赋值, 例如 student stu1={"Liming", 20}; student stu2; 可以令stu2=stu1, 那么stu2的内容和stu1的内容就一样了.

11. 结构体数组. 创建了结构体后, 所创建的结构体就相当于一个类型了, 这个类型的一个集合就相当于一个这个类型的数组了. 例如还是上面创建的结构体student, 定义一个结构体数组student stu[100], 那么久声明了100个结构体变量了, 分别是stu[0]~stu[99]. 也可以初始化结构体数组, 例如
      student stu2[2]={
              {"Liming", 20},
              {"Xiaonei",30}
       };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值