头文件#include <fstream>
类ifstream : 意思是input file stream(文件输入流)
类ofstream : 意思是output file stream (文件输出流)
类fstream : file stream (文件流)【几乎包含前面两种的操作】
创建一个文件输入流对象:
int main(){
ifstream inFile("filename.txt");
return 0;
}
/**或者*/
int main(){
ifstream inFile;
inFile.open("filename.txt");//里面可以加上参数("filename.txt", ios::in);
return 0;
}
/**二者效果是等同的*/
对于fstream类
int main(){
fstream ioFile;
ioFile.open("filename.txt", ios::in|ios::out);//形式参数表的第二个参数可以省略,因为有默认参数
return 0;
}
对于ofstream
文本模式:
outFile.open("example.txt", ios::out|ios::trunc);
如果文件不存在则创建一个,如果文件存在则清空并打开;
如果要显示指定二进制文件模式
outFile.open("example.txt", ios::binary);
检查是否打开成功
两种函数:
fail(); 打开失败则返回true, 否则返回false;
is_open(); 打开成功返回true, 否则返回true;/**这个用的居多*/
使用方法:
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
istream inFile;
inFile.open("file.txt");
if(!inFile.is_open()){
cerr << " wrong! " << endl;
exit(EXIT_FAILURE);
}
……
return 0;
}
关闭文件
对象调用close函数;
inFile.close();
字符流输入输出
输入单个字符
char ch
inFile.get(ch);
输出单个字符
outFile.put(ch);
行输入输出
getline(文件流对象,string contents);
块输入输出
read 和 write 函数;(以二进制的方式读写文件)
inFile.read(reinterpret_cast<char *> a, sizeof(a)); // 传入进去的内容一定要加上reinterpret_cast <char *> ()来转换成char类型的指针。
这个用于输入和输出数组,对象成员之类的。
例如:
int main(){
int a[] = {1, 2, 3, 4};
ofstream outFile;
outFile.open("1.txt");
outFile.write(reinterpret_cast<char*>(a), sizeof(a));
outFile.close();
return 0;
}