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()获得数组长度,得到的却是指针的字节长度
第四天
指针的定义
结构体类型指针的传参
第五天
指针数组:指针类型的数组。一个数组中全是指针

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

堆区申请空间

浙公网安备 33010602011771号