《C++primer plus》阅读笔记(2018-10-25)

    字符串是以空字符为结尾的一系列字符。   字符串可用引号括起的字符常量表示,其中隐式包含了结尾的空字符。  可以将字符串存储在char数组中,可以用被初始化为指向字符串的char指针表示字符串。

  数据对象: 就是为数据项分配的内存块。

 

strcmp(str1,str2)  如果str1 比 str2 小 那么返回一个小于零的数;  如果str1 比 str2 大 那么返回一个大于零的数; 如果 str1 等于 str2 那么 返回零值。

 

比较string类类型的字符串   :

     string类对象不使用空字符来标记字符串末尾。

   类型别名: 

    C++为类型创建别名的方式有两种:

   (1) 使用预处理器:  

         #define BYTE char // preprocessor replaces (预处理器 替代)

     这样之后,预处理器将在编译程序时,用char替换所有的BYTE, 从而使得 BYTE 称为char的别名。

(2) 使用关键字typedef 来创建别名

  typedef char byte;   //makes byte an alias(alias - 别名) for char 

     通用格式:  typedef  typeName  aliasName; 

    也就是说要将aliasName作为某种类型的别名,可以声明aliasName,如同将aliasName声明为这种类型的变量那样,然后在声明之前加上关键字typedef。

 

 

 在使用预处理器创建别名时  需要注意一点   预处理器的副作用:

   例子 :  #d:efine FLOAT_POINTER float *;

 FLOAT_POINTER pa,pb;

就会被转换成 下列的样子:   float * pa,pb;从而导致编译出错。   而使用typedef 就不会有这样的副作用。 (typedef能够处理更复杂的类型别名。)

 注意:typedef不会创建新的类型,只是为已有的类型创建一个别名  仅此而已。

 

使用原始的cin进行输入:

 那么如何知道何时停止读取呢? 如何知道这一点呢? 一种方法是选择某个特殊字符——有时被称为哨兵字符(sentinel character),将其作为停止标记。   通常,这种任务由操作系统处理。

 

 

  检测到EOF后,cin将两位(eofbit 和 failbit)都设置为1。 可以通过成员函数eof()来查看eofbit是否被设置;  如果检测到EOF,则cin.eof()将返回bool值true,否则返回false。 同样,如果eofbit 或者 failbit被设置为1,则fail()成员函数返回true,否则返回false。 注意 eof() 和 fail() 方法是报告最近读取的结果;也就是说,他们在事后报告,而不是预先报告。

 

 

理解二维数组:

 假设声明了一个这样的数组: 

      int maxtemps[4][5];

该声明意味着maxtemps是一个包含4个元素的数组,其中每个元素都是一个由五个整数组成的数组。

  如果把二维数组放成一列 那么 就类似于{{1,2,3},{1,2,3}} 对于数组如果 印象不深刻 或者有些不懂的  自己 尝试花花  一维数组  二维数组 三维数组的  图  就基本上好了 可以理解  大概是个声明形状   怎么寻找数组中的数的位置,  哪个数字 代表哪一维   都可以清楚的知道了。  (画图  画图  很重要  牛逼的 可以  脑补)

 

 

nested(嵌套的,内装的)

 

有个 比较绕的点(关于 cin.get()函数使用的问题):

   cin.get(ch)  这个函数调用;  读取输入中的下一个字符,而不管该字符是什么,并将其存储到ch中, 成员函数调用cin.get()返回下一个输入字符——包括空格、换行符和制表符,因此,可以这样使用它:

  ch = cin.get();  (感觉和上面的 调用是一样的效果,因为都把 下一个 输入的字符  赋值给了 ch   虽然实现的机制可能不同,但是最后的结果 是一样的)

  cin.get(char) 成员函数调用通过返回转换为false的bool值来指出 已到达 EOF , 而 cin.get() 成员函数会返回EOF值来指出已到达 EOF 。 (EOF  是在iostream中定义的。)

 

 有个比较好玩的库: (字符函数库 cctype)————这个居然是C++从C继承过来的  ,  学C的时候 没有接触过

   这个库可以简化诸如确定字符是否为大写字母、数字、标点符号等工作。  

   这个库使用 isalpha()来检查字符是否为字母字符,使用isdigits()来测试字符是否为数字字符 

             使用isspace()来测试字符是否为空白,如换行符、空格和制表符。

 

cctype中的字符函数:

isalnum(); 如果参数是字母数字,即字母或数字,该函数返回true

isalpha();如果参数是字母,该函数返回true;

isblank();如果参数是空格或水平制表符,该函数返回true;

iscntrl();如果参数是控制字符(基本上可以理解成 某些特殊字符),该函数返回true;

isdigit();如果参数是数字(0 9),该函数返回true;

isgraph();如果参数是除空格之外的打印字符,该函数返回true;

islower();如果参数是小写字母,该函数返回true;

isprintf();如果参数是打印字符(包括空格),返回true;

ispunct();如果参数是标点符号,该函数返回true;

isspace();如果参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符或者垂直制表符,该函数返回true;

isupper();如果参数是大写字母,该函数返回true;

isxdigit();如果参数是十六进制的数字,即0 9 a f 或A F ,该函数返回true;

tolower(); 如果参数是大写字符,则返回其小写,否则返回该参数

toupper(); 如果参数是小写字符,则返回其大写,否则返回该参数

 

C++中写入到文本文件中:

   对于文件输入,C++使用类似于cout的东西。

(1)必须包含头文件iostream;

(2)头文件iostream定义了一个用处理输出的ostream类

(3)头文件iostream声明了一个名为cout的ostream变量(对象)

(4)必须指明名称空间std; 

(5)可以结合使用cout和操作符>>来显示各种类型的数据

  文件输出与此及其相似

(1)必须包含头文件fstream。

(2)头文件fstream定义了一个用于处理输出的ofstream类

(3)需要声明一个或多个ofstream变量(对象),并以自己喜欢的方式对其命名,条件是遵守常用的命名规则

(4)必须指明名称空间std;

(5)需要将ofstream对象与文件关联起来。为此,方法之一是使用open()函数的方法

(6)使用完文件后需要用close()来关闭

(7)可结合使用ofstream对象和操作符>>来输出各种类型的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值