C++第二周

第一天

结构体的创建

 

 

 

结构体数组

 

第二天

结构体数据多一个是为了删除时候预留一个覆盖,增加代码的健壮性

 

 

 因为users[i] = users[i+1]处是直接后面一个数据覆盖前面一个数据,所以一般数据库长度要设置得比实际容纳人数多一个

清除所有用户:memset(users,0,sizeof(users));//重置数组

 

 

 

本地化存储

1,导入头文件:#include<fstream>

2,写流:创建对象,打开文件,实现操作

3,关流

 

 

 

读流方式一:此处使用的数据流为char数组,while判断为ifs>>buf.直接以一行为数据读取

 

 

读流方式二:此处使用的是string容器,while判断条件为:string自带的函数。其中第一个参数为流对象,第二个变量为存放数据的stirng变量

 

 

 读流方式三:容器还是char数组,while判断条件为输出流的自带函数eof().判断是否到文件结尾。end of file

此处调取了读流的自带getline函数,第一个参数是容器对象,第二个为容器对象能存入空间大小。切存在返回值,返回值类型为bool

 

 

读流方法四:直接用ifs的getline函数返回值作为while判断条件

 

 读流方法五:按照字符读取数据,while中调用ifs的get函数实现字符读取。并且判断这个是否到达了文件结尾。再进行输出

 

 

多数据存取

 

疑问1:为什么在调用了cin的cin.getline(data,100)或者getline(cin,data)后可以不需要调用cin.ignore();函数?而且cin.ignore()是否可以省略?清空输入流的意义?

解答:关于 cin.ignore() ,完整版本是 cin.ignore(int n, char a), 从输入流 (cin) 中提取字符,提取的字符被忽略 (ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到 n 或者被抛弃的字符是 a,则 cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。比如可以这么用:cin.ignore(1024,'\n'),通常把第一个参数设置得足够大,这样实际上总是只有第二个参数 \n 起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。如果cin.ignore()不给参数,则默认参数为cin.ignore(1,EOF) 其中 EOF是end of file的缩写,表示"文字流"(stream)的结尾。

实验结果:当在getline(cin,data)后面接着调用cin.ignore();时候需要按下两次回车才能输入后面的数据。造成这样的原因?(待查证)

 

疑问2:对于cin.getline(data,100);此处的data为 char data[100];和getline(cin,data)此处的data为stirng类型。两种输入的不同

解答:对于 cin 的操作 使用 getline(cin,str)往往可以实现更加简单以及安全的字符串操作,不同于 cin.getline(char*, int a),前者可以直接对字符串进行操作。

 

 

 

 

第三天

数组及数组名使用:数组名可以用来当指针使用,打印出来为地址

当数组作为函数参数时,在函数内部,不能使用sizeof()获得数组长度,得到的却是指针的字节长度

 

第四天

指针的定义

结构体类型指针的传参

第五天

指针数组:指针类型的数组。一个数组中全是指针

 

 

利用指针变量的运算,实现对数组地址中数据的访问

 

 

堆区申请空间

 

posted @ 2022-03-22 02:54  AFK_W  阅读(23)  评论(0)    收藏  举报