c++ new,文件输入输出

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);
}

该程序打开用户指定的文件,读取其中的数字,然后指出文件中有多少个值,以及它们的和,平均值

原文地址:https://www.cnblogs.com/feng-ying/p/10471325.html