[C++] 文件的基本读写
C++的文件读写与其标准输入输出流(cin和cout)操作基本一致,文件的操作是通过文件流实现的,文件流本身不是文件,而只是以文件为输入输出对象的流。若要对磁盘文件输入输出,就必须通过文件流来实现。
在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。
而fstream类又有两个子类ifstream和ofstream,ifstream是从内存到硬盘,ifstream是从硬盘到内存.
fstream类的两个重要函数open()函数和close()函数
open()函数
void open(const char* filename,int mode,int access); //打开文件
参数说明
filename: 要打开的文件名,若要打开指定文件只需要在文件名前面加上路径,不加默认为当前目录下
mode: 打开文件的操作方式
access: 打开文件的属性
常用打开方式
ios::app: 以追加的方式打开文件
ios::ate: 文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in: 文件以输入方式打开(文件数据输入到内存)
ios::out: 文件以输出方式打开(内存数据输出到文件)
close()函数
对象名.close( ); //关闭文件
在对已打开的磁盘文件的读写操作完成后,应关闭该文件。关闭文件用成员函数close。所谓关闭,实际上是解除该磁盘文件与文件流的关联,原来设置的工作方式也失效,这样,就不能再通过文件流对该文件进行输入或输出。
用插入器(<<)向文件输出;
用析取器(>>)从文件输入。
例子1 往文件里写入内容
#include<iostream>
#include<fstream> //文件流的头文件
using namespace std;
int main()
{
ofstream outfile; //定义ofstream类(输出文件流类)对象outfile
outfile.open("D:\\1\\c++.txt",ios::app); //打开指定目录文件 使文件流与c++.txt文件建立关联 打开方式为追加
outfile<<"hello world!"; //将"hello world!"写入文件中
outfile.close(); //关闭文件 使文件流与c++.txt文件断开关联
return 0;
}
例子2 往读取文件内容
#include<iostream>
#include<fstream> //文件流的头文件
using namespace std;
int main()
{
char a[100];
ifstream infile; //定义ifstream类(输入文件流类)对象outfile
infile.open("D:\\1\\c++.txt");//打开文件 使文件流与c++.txt文件建立关联
infile>>a; //将文件内容赋给字符数组a 若读取到空格,赋值会终止
infile.close(); //关闭文件 使文件流与c++.txt文件断开关联
cout<<a; //输出文件内容
}
在c++中使用ifstream读文件的时候会以空格为分隔符,后面的内容就不读取了。这时候可以调用getline函数来读取制定大小的内容。具体代码如下:
例子2plus 往读取文件内容(遇到空格情况)
#include<iostream>
#include<fstream> //文件流的头文件
using namespace std;
int main()
{
char a;
ifstream infile; //定义ifstream类(输入文件流类)对象outfile
infile.open("D:\\1\\c++.txt");//打开文件 使文件流与c++.txt文件建立关联
while(!infile.eof())//跳过空白字符
{
infile.get(a); //依次获取文件中每个字符 并输出
cout<<a;
}
infile.close(); //关闭文件 使文件流与c++.txt文件断开关联
}
欢迎大家交流补充~