在了解文件的输入流输出流时,首先我们来了解一下文件的打开方式有哪些?
文件打开方式
ios::in | 读的方式打开 |
ios::out | 写的方式打开 |
ios::trunc | 如果文件已经存在,打开文件之前就会把长度截为0 |
ios::binary | 以二进制方式写(默认是文本方式) |
ios::ate | 文件打开后定位到文件尾部 |
ios::app | 尾部追加写入 |
这些打开方式,都可以用位操作 | 组合使用.
对文件进行输入流,输出流的操作,需要使用头文件:
使用 fstream,可以定义一个对文件的输入流对象,也可以定义文件的输出流对象,但是在打开文件的时候,需要指明使用的是哪种文件打开方式.如果是用来写文件,那么就要在文件打开的时候时候在文件名后面加上 ios::out,例如:
读文件就需要在后面加上ios::in .
定义文件的输入流对象
ifstream 是专门用来定义文件的输入流对象,这时候可以不写文件打开方式(默认为ios::in),
示例代码:
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
int age;
ifstream inFile;//定义了一个文件输入流对象
inFile.open("user.txt");//文件默认为 ios::in 打开方式
while (1) {
inFile >> name;
if (inFile.eof()) { //判断文件是否结束
break;
}
cout << name << "\t";
inFile >> age;
cout << age << endl;
}
// 关闭打开的文件
inFile.close();
system("pause");
return 0;
}
在读取文件的内容的时候,需要使用符号 >> 把文件的内容读取到变量name,age中,
定义文件的输出流对象
ofstream,时专门来定义文件的输出流对象的,同样不需要写文件打开方式(但编译器已经默认是ios::out)方式,
示例代码:
#include<iostream>
#include<fstream>//文件操作
using namespace std;
int main1(void) {
string name;
int age;
ofstream outFile;//定义了一个文件输出流对象
outFile.open("user.txt");//使用输出流对象打开一个文件
// 建议指定打开方式
// ofstream的默认打开方式是 ios::out,截断式写入 ios::trunc
//使用输出流对象打开一个文件, ios::out | ios::trunc
//outFile.open("user.txt", ios::out | ios::trunc);
while (1) {
cout << "请输入姓名:[ctrl+Z推出]";
cin >> name;
if (cin.eof()) {
break;
}
//把输入的姓名写入文件
outFile << name << " ";
cout << "请输入年龄";
cin >> age;
outFile << age << endl;
}
//关闭刚才打开的文件流
outFile.close();
system("pause");
return 0;
}
需要用符号 << 把从键盘输入的数据,写到定义好的文件输出流对象 outFile 里面.
二进制的文件打开方式
读:
写:
以上就是今天的分享了!
本文含有隐藏内容,请 开通VIP 后查看