1. c++使用new来分配内存,delete清除内存
下面代码显示了如何new int 数据内存,new int[size] 数组内存,与java不同的是这里的size不能省略,new People(构造函数的参数)
如果是结构体,采用以下格式
使用delete删除指针,但是如果指针指向的是数组,需要使用delete []来删除
2. C++的cin,cin.get(),cin.getline()方法异同
a. cin使用空白(空格,制表符,换行符)来确定字符串结束的位置,意味着cin在获取字符数组输入时只读取一个单词,读取该单词后,cin将字符串放到数组中,并在结尾自动添加空字符
b. int cin.get():比如回车的返回值是10
istream& cin.get(char& var)
istream& cin.get(char* s, streamsize n):
istream& cin.get(char* s, streamseize n, char delim):读取到delim时停止
后面继续跟上一个get()可以实现getline的效果
潜在的问题:输入的字符串比分配的空间长,如果输入行的字符串比指定的多,getline()和get()将把剩余的字符留在输入队列中。
c. cin.getline(char* s, streamsize count):面向行的输入,第一个参数用来存储输入行的数组的名称,第二个参数是读取的字符数
3. 如果系统需要用户输入数字,当用户输入的不是数字时,该程序不再读取输入,当用户输入是非数字输入,用户将拒绝,并要求用户继续输入数字:
(1). 重置cin以接收新的输入
(2). 删除错误输入
(3). 提示用户再输入
a = cin.get() 如果类型不匹配错误的话,cin.fail()也会返回
4. strcmp(char*, char*):使用两个字符串地址作为参数,这意味着参数可以是指针,字符串常量或者字符数组名,如果两个字符串相同,将返回0,如果第一个字符串按字母顺序在第二个字符串之前,则strcmp()将返回一个负值,如果第一个字符按照字母顺序排在第二个字符串之后,则strcmp()将返回一个正数值,需要包含<cstring>
strcpy(char *, const char*):拷贝后面的常量到前面的char指针中,会报错,需要使用 #prama warning(disable:4996)
5. 简单的文件输入和输出
5.1 写入到文本文件中
必须包含头文件fstream,头文件定义了一个可以用于处理输出的ofstream类,需要声明一个或者多个ofstream对象,并以自己喜欢的方式对其进行命名,条件是遵守命名规则,必须指明名称空间std,例如,引用元素ofstream,必须使用编译指令或前缀std::。必须将ofstream对象与文件关联起来,方法之一是使用open()方法,使用完文件后,使用close()将其关闭,结合ofstream对象和运算符<<来输出各种类型的数据
主要步骤:a. 包含头文件fstream
b. 创建ofstream对象
c. 将该ofstream对象和同一文件关联起来
d. 像使用cout那样使用ofstream对象
输出结果
5.3 读取文本文件
必须包含头文件fstream,头文件fstream定义了一个用于处理输出的ifstream类,需要声明一个或者多个ifstream对象,并以自己喜欢的方式命名,必须指名命名空间std,使用using或者前缀std::,使用完文件以后,应使用close()方法将其关闭。可以使用ifstream对象和运算符>>来读取各种类型的数据,可以使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和getline()来读取一行字符,可以结合使用ifstream和eof(),fail()等方法来判断操作是否成功
如果试图一个文件被成功打开,方法is_open()将返回true,如果文件没有被打开!inFile.isopen()将为true,函数exit()的原型是在cstdlib定义的。
inFile.open("bowling.txt"); if(!inFile.is_open()){ exit(EXIT_FAILURE); }
该程序打开用户指定的文件,读取其中的数字,然后指出文件中有多少个值,以及它们的和,平均值