文件的读写
iostream中定义的数据类型和函数只能用于标准输入/输出设配的数据处理。C++将处理文件的数据类型放在了头文件fstream里,分为ofstream和ifstream。文件流操作一般包括五个步骤:
<!–hexoPostRenderEscape:
/ <1> 包含头文件 /
#include <fstream>
using namespace std;
/ <2> 定义文件流句柄file_handler /
ifstream inData;
ofstream outData;
/ <3> 将文件流句柄与磁盘文件filename关联起来 /
file_handler.open(filename, mode)
/
打开或建立文件的模式mode的可选值:
ios::in // 打开输入文件,ifstream类型变量的默认方式
ios::out // 建立输出文件,ofstream类型变量的默认方式
ios::app // 增加方式,若文件存在,将在文件尾增加数据,否则就建立文件
ios::trunk // 若文件存在,则文件中已有内容将被清除
ios::nocreate // 若文件不存在,则打开操作失败
ios::noreplace // 若文件存在,则打开操作失败
/
/ 打开一个文件:
ofstream outData;
outData.open("abc.txt", ios:in);
或将<2>,<3>合为一步:
ofstream outData("abc.txt", ios::in)
/
/ <4> 用文件流(<<或>>)操作文件,读/写文件数据,将输入文件流与>>连接,就能够从文件中读入数据,与cin用法相同。将输出文件流与<<连接,就能够从文件中读入数据,与cout用法相同。 /
/ <5> 关闭文件 /
inData.close();
ourData.close();
:hexoPostRenderEscape–>示例
<!–hexoPostRenderEscape:
#include <iostream>
#include <fstream>
using namespace std;
void main() {
ofstream outData("C:\data.txt"); // 前一个 / 用于转义
ifstream inData;
int x, a[10];
for (int i = 0; i < 10; i++) {
cin >> x;
outData << x << " "; // 将x的值写入文件流句柄outData指向的文件data.txt中
}
outData.close();
inData.open("D:\data.txt");
int j = 0;
while(!inData.eof())
inData >> a[j++]; // 将data.txt中的数据载入数组a[]中
inData.close();
int s = 0;
for (int i = 0; i < 10; i++) {
s += a[i];
cout << a[i] << " ";
}
cout << endl;
cout << "the sum is: " << s << endl;
}
:hexoPostRenderEscape–>
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!