使用ifstream和ofstream的时候用的什么明明空间,为什么调用open函数要加ios::in的参数
时间: 2023-05-12 13:03:10 浏览: 70
使用ifstream和ofstream时,需要包含头文件<fstream>。调用open函数时加上ios::in参数是为了指定文件的打开模式为输入模式,即只读模式。这样打开的文件只能进行读取操作,不能进行写入操作。
相关问题
std::fstream、std::ifstream 和 std::ofstream 类的成员函数open()
std::fstream、std::ifstream和std::ofstream是C++标准库中用于文件操作的类。它们都继承自std::ios_base类,并提供了open()成员函数来打开文件。
1. std::fstream类:
- open()函数:用于打开文件,并指定打开方式和文件名。可以使用不同的打开模式,如std::ios::in(读取)、std::ios::out(写入)和std::ios::app(追加)等。
void delete_add(Contacts obj){ ofstream outFile; outFile.open("1.dat",ios::binary|ios::app); outFile.write((char*)&obj,sizeof(obj)); outFile.close(); } int del_one(char name[50]){ ifstream inFile; int flag = 0; inFile.open("Contacts.dat",ios::binary); Contacts obj; while(inFile.read((char*)&obj,sizeof(obj))){ if(strcmp(obj.getName(),name) == 0) { flag = 1; cout<<"删除成功:"<<endl; }else{ delete_add(obj); } } if(flag == 0){ cout<<"无此联系人,删除失败!"<<endl; }else{ return 1; } inFile.close(); }添加注释
//定义一个函数,将联系人对象写入文件中
void delete_add(Contacts obj){
ofstream outFile; //定义一个输出文件流对象
outFile.open("1.dat",ios::binary|ios::app); //以二进制和追加的方式打开文件
outFile.write((char*)&obj,sizeof(obj)); //将联系人对象写入文件
outFile.close(); //关闭文件流
}
//定义一个函数,用于删除指定姓名的联系人
int del_one(char name[50]){
ifstream inFile; //定义一个输入文件流对象
int flag = 0; //标记是否找到要删除的联系人
inFile.open("Contacts.dat",ios::binary); //以二进制的方式打开文件
Contacts obj; //定义一个联系人对象
while(inFile.read((char*)&obj,sizeof(obj))){ //循环读取文件中的联系人对象
if(strcmp(obj.getName(),name) == 0) //如果找到了要删除的联系人
{
flag = 1; //将标记设为1,表示找到了
cout<<"删除成功:"<<endl; //输出提示信息
}else{
delete_add(obj); //将不需要删除的联系人对象写入临时文件中
}
}
if(flag == 0){ //如果没有找到要删除的联系人
cout<<"无此联系人,删除失败!"<<endl; //输出提示信息
}else{
return 1; //返回1,表示删除成功
}
inFile.close(); //关闭文件流
}