广州番禺区房价/谷歌seo技巧
一、头文件
#include <ofstream>//写文件类
#include <ifstream>//读文件类
#include <fstream>//同时读写(最常用)
二、声明文件对象
ofstream ofile("1.txt");//声明写文件对象并打开
ifstream ifile("1.txt");//声明读文件对象并打开
fstream file("1.txt");//读写文件对象
三、打开文件
函数:open()
void open(const char * filename, ios_base::openmode mode = ios_base::in | ios_base::out);
void open(const wchar_t *_Filename, ios_base::openmode mode = ios_base::in | ios_base::out, int prot = ios_base::_Openprot);
如果声明时利用构造函数打开了文件,就不用再用open()了
打开文件方式:
mode | 作用 |
---|---|
ios::in | 为输入(读)而打开文件 |
ios::out | 为输出(写)而打开文件 |
ios::app | 所有输出附加在文件末尾 |
ios::ate | 初始位置:文件尾 |
ios::trunc | 如果文件已存在则先删除该文件 |
ios::binary | 二进制方式打开 |
四、文件读入
把文件对象当cin用
将文件内容读入到buf数组中
- 方法一
char buf[1024];
while (ifile >> buf) {cout << buf << endl;}
- 方法二
char buf[1024];
while (ifile.getline(buf, sizeof(buf))) {cout << buf << endl;}
- 方法三
string buf;
while (getline(ifile, buf)) {cout << buf << endl;}
- 方法四
char c;
while ((c=ifile.get()) != EOF) {cout << c;}
二进制文件读入:
输入文件流对象.read((char*)&对象或对象数组名[下标],sizeof(对象名或所属类名))
五、文件写出
把文件对象当cout用
或
put()函数
for(int i=0;i<100;i++){ofile<<i<<endl;
}
二进制文件写出:
输出文件流对象.write((char*)&对象或对象数组名[下标],sizeof(对象名或所属类名))
六、关闭文件
ofile.close();//必须要写
ifile.close();
示例
input.txt文件读入后,统计字数,将统计结果输出到output.txt文件
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;
int main()
{ifstream ifile("input.txt");ofstream ofile("output.txt");//确认文件是否打开成功if(!ifile||!ofile){cout<<"Failed"<<endl;return -1;}char c;//存放读入的字符vector<int>letters(128);//统计每个字符出现的次数//读文件,统计每个字符出现次数while(ifile){ifile.get(c);letters[c]++;}//将字符对应次数输出到输出文件中for(int i=0;i<letters.size();i++){if(letters[i]!=0)ofile<<char(i)<<":"<<letters[i]<<endl;}cout<<"Succeed!"<<endl;return 0;
}
运行截图:
输入文件:
输出文件: