C++中文件的读取和写入操作

输入输出相关类

C++中输入出的类的关系如图所示:
继承关系
其中对文件的操作相关类为ifstream和ofstream,依赖于头文件#include <fstream>,具体来说对文件的操作是通过指针来操作的,对输入文件,有一个读指针;对输出文件,有一个写指针;对输入输出文件,有输入输出指针,可以通过seekp()或seekg()函数来改变指针指向的位置,从而读取或写入文件的不同位置,比如对写文件来说:

ostream outFile("out.txt",ios::app|ios::binary);//定义输出对象,以添加的方式打开
long location = outFile.tellp();//取得写指针的位置
location = 10;
outFile.seekp(location);//将指针移动到第10个字节处
outFile.seekp(location,ios::beg);//从头数10个字节处
outFile.seekp(location,ios::cur);//从当前位置数10个字节处
outFile.seekp(location,ios::end);//从最后数10个字节处

读文件的和写文件类似,唯一不同的是使用 seekg()函数。

文本文件读写

通过读取pai.txt文件里的数字并排序后输出到out.txt文件中,代码如下:

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int main(int argc,char **argv)
{
	vector<int> pai,v;  int x;
	if(argc != 2)
	{
		cout<<"File name missing!"<<"   The argc is:"<<argc<<endl;
		return 0;
	}
	
	ifstream inFile(argv[1],ios::in|ios::binary);//读取pai文件中的内容
	ofstream outFile("out.txt",ios::out|ios::binary);
	if(!inFile)
	{
		cout<<"File1 open error!"<<endl;
		return 0;
	}
	if(!outFile)
	{
		cout<<"File2 open error!"<<endl;
		inFile.close();
		return 0;
	}
		

	while(inFile >> x)
	{	
		pai.push_back(x);
		char p = inFile.get();
		if(p == '\n') break;
	}
	for(int i=0;i<pai.size();i++)
	{
		cout<<pai[i]<<" ";
		outFile << pai[i] << " ";
	}	
	cout<<endl;

	outFile.close();
	inFile.close();

	return 0;
}

结果如下:
在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页