文件存取信息(c++)

建立一个包含学生学号、姓名、成绩的文本文件。本例程一行放一个学生记录。

#include<iostream>
#include<fstream>
using namespace std;
/*
* 文本文件用文本文件流进行读/写操作。文本文件是顺序存取文件
* 文本文件用默认的方式的打开
* 描述一个对象的信息称为一个记录。文本文件本身没有记录逻辑结构。为了便于识别,
在文本文件中通常将一个记录放在一行(用换行符分隔的逻辑行)。记录的每个数据项
之间可以用空白符、换行符、制表符等作为分隔符
* 
*/
int main() {
	char fileName[30], name[30];
	int number, score;
	ofstream outstuf;//建立输出文件流对象
	cout << "Please input the name of students file:\n";
	cin >> fileName;//输入文件名
	outstuf.open(fileName, ios::out);//连接文件,指定打开方式
	if (!outstuf)//调入重载算符函数测试流 
	{
		cerr << "File could not be open." << endl;
		abort();
	}
	outstuf << "This is a file of students\n";//写入一行标题
	cout << "Input the number,name,and score:"
		<< "(Enter Ctrl+Z to end Input)\n?";
	while (cin >> number >> name >> score) {
		outstuf << number<<'\t' << name <<'\t' << score << '\n';//向流插入数据
		cout << "?";
	}
	outstuf.close();

}

程序运行所用例子
程序运行用例
程序运行后所生成的文本
程序运行后创建的文本详情

关于读取文本文件。读取上述代码建立的文本文件D :\student.txt,在屏幕上显示学生记录,以及最高分数、最低分数和平均分数。

#include<iostream>
#include<fstream>
using namespace std;
int main() {
	char name[30], s[80];
	int number, score;
	int n = 0, max, min, total = 0;
	double ave;
	ifstream instuf("d:\\student.txt", ios::in);//打开文件
	instuf.seekg(0, ios::beg);//流指针置在文件头
	if (!instuf)
	{
		cerr << "File could not be open." << endl;
		abort();
	}
	instuf.getline(s, 80);//略去标题行
	while (instuf >> number >> name >> score)//提取并测试
	{
		cout << number << "\t" << name << "\t" << score << '\n';
		if (n == 0)
			max = min = score;
		else
		{
			if (score > max)max = score;
			if (score < min)min = score;
		}
		total += score;
		n++;
	}
	ave = double(total) / n;
	cout << "maximal is : " << max << "\nminimal is : " << min << "\naverage is : " << ave << '\n';
	instuf.close();//关闭文件
}
/*
* 浏览文件,部队文件数据进行任何处理,只需要简单的浏览一下文件。
* 函数browseFile用getline按行读出文件中的字符,
* 直接显示在屏幕上
* browseFile("d:\\file\\students.txt",0);来调用
*/
void browseFile(char*fileName,int delLine)
{
	ifstream inf(fileName, ios::in);
	char s[80];
	for (int i = 1; i <= delLine; i++)//读出开头delLine行不显示
		inf.getline(s, 80);
	while (!inf.eof())
	{
		inf.getline(s, 80);//按行读出文件
		cout << s << endl;//按行显示
	}
	inf.close();
}
/*
* 以app方式打开文件,向文件中追加数据
* 一个文本文件一旦建立之后,不能随意插入数据,但可以在文件尾部追加数据
*/
int Append(char* fileName)
{
	char name[30], ch;
	int number, score;
	ofstream outstuf(fileName, ios::app);//以追加方式打开文件
	if (!outstuf)
	{
		cerr << "File could not be open." << endl;
		return 0;//返回0表示文件不能打开
	}
	cout << "DO you want append record to " << fileName << "?(Y or N)\n";
	cin >> ch;//用户应答
	while (ch == 'Y' || ch == 'y')
	{
		cout << "Input the number, name, and score :\n";
		cin >> number >> name >> score;
		outstuf << number << '\t' << name << '\t' << score << '\n';//追加一个记录
		cout << "?(Y or N)";
		cin >> ch;//用户问答
		if (ch == 'N' || ch == 'n')
			cout << "Close file.\n";
	}
	outstuf.close();
	return 1;//返回1表示文件正常操作
}

本文章所有代码数据来源《C++程序设计基础》(周霭如 林伟健),仅为本人学习文件c++存取的一些整理笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值