C++文件读写

来源:互联网 发布:淘宝客服这工作怎么样 编辑:程序博客网 时间:2024/05/17 09:15

打开文件是指在文件读写之前做必要的准备工作,包括:

1.位文件流对象和指定的磁盘文件建立关联,以便使文件流流向指定的磁盘文件。2.指定文件的工作方式。

C++中,代开文件可以用两种方法实现

1.调用文件流的成员函数

2.在定义文件流对象时指定参数

文件输入输出方式设置

方式

作用

ios::in

以输入方式打开文件

ios::out

以输出方式打开文件

ios::app

以输出方式打开文件,写入的数据添加在文件末尾

ios::ate

打开一个已有的文件,文件指针指向文件末尾

ios::trunc

打开一个文件,如果文件存在,则删除其中的所有数据,如果不存在,建立新文件。如指定ios::out方式,而未指定ios::ateios::in则同时默认此方式

ios::binary

以二进制方式打开一个文件,如不指定此方式则默认为ASCII方式

ios::noreplace

如果文件不存在,则新建文件,如果文件已存在,则打开失败

ios::in ios::out

以输入输出方式打开,文件可读可写

ios::out ios::binary

以二进制方式打开一个输出文件

ios::in ios::binary

以二进制方式打开一个输入文件

ios::nocreate

打开一个已有文件,如果文件不存在,则打开失败


关闭文件

在对已打开的磁盘文件的读写操作完成后,应关闭该文件。关闭文件用成员函数close所谓关闭,实际上是解除该磁盘文件与文件流的关联,原来设置的工作方式也失效,这样,就不能通过文件流对该文件进行操作。

void test()//C++文件ASCII文件的读写操作
{
char* filename = "abc.txt";
ifstream ism;//创建文件输入流对象
ofstream osm;//创建文件输出流对象
osm.open(filename, ios::out);//ios::out由程序向文件输出
if (!osm)
{
cout << "osm open err" << endl;
return;
}
else
{
cout << "osm open success" << endl;
}
osm << "98765432d1" << endl;
osm << "jkdafkj" << endl;
osm.close();
ism.open(filename, ios::in);//ios::in,由文件向程序输入
if (!ism)
{
cout << "ism open err" << endl;
return;
}
else
{
cout << "ism open success" << endl;
}
char buf[1024] = { 0 };
ism.getline(buf, 1024);
cout << buf << endl;
memset(buf, 0, 1024);
ism.getline(buf, 1024);
ism.close();
}
class Info
{
public:
char name[30];
int age;
Info(char* name,int age)
{
strcpy(this->name,name);
this->age = age;
}
Info() {};
};
void test1()//二进制文件读写用成员函数read,write
{
Info inf1("liming", 20), inf2("wanghong", 19);
char* filename = "binary.txt";
ifstream ism;ofstream osm;
osm.open(filename, ios::out);
osm.write((const char*)(&inf1), sizeof(Info));//向文件写入
osm.write((const char*)(&inf2), sizeof(Info));
osm.close();
Info inf3;
ism.open(filename, ios::in);
ism.read((char*)(&inf3), sizeof(Info));//从文件读出
cout << inf3.age << "\n" << inf3.name << endl;
}



0 0
原创粉丝点击