Z02 fstream中ifstream的简单用法

本文介绍了C++中ifstream类的基本用法,包括如何打开文件、读取数据、判断读取状态及关闭文件等关键步骤,并通过一个具体的示例代码展示了ifstream的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、引言

本篇将介绍fstream中ifstream(input file stream)的用法,ifstream是从硬盘到内存,本例读取文本数据至控制台显示。

2、比较istream与ifstream

1)使用istream的准备

  • 必须包含头文件iostream;
  • 头文件iostream定义了一个用处理输入的istream类;
  • 头文件iostream声明了一个名为cin的istream变量对象;
  • 必须指明名称空间std;
  • 可以结合使用cin和运算符>>来读取各种类型的数据;
  • 可以使用cin和get()方法读取一个字符,使用cin和getline()来读取一行字符;
  • 可以结合使用cin和eof()、fail()方法来判断输入是否成功;
  • 对象cin本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则被转换为false。
2)使用ifstream的准备
  • 必须包含头文件fstream;
  • 头文件fstream定义了一个用于处理输入的ifstream类;
  • 需要声明一个或多个ifstream变量对象;
  • 必须指明名称空间std;
  • 需要将ifstream对象与文件关联起来,方法之一open();
  • 使用完成文件后,应使用close()方法将其关闭;
  • 可结合ifstream与运算符>>来读取各种类型的数据;
  • 可以使用ifstream和get()方法来读取一个字符,,使用ifstream和GetLine()方法来读取一行字符;
  • 可以结合ifstreamhe eof()、fail()等方法来判断输入是否成功;
  • ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将转换为布尔值true,否则被转换为false。

3、示例代码

#include <iostream>
#include <fstream>
#include <cstdlib> //exit()

const int SIZE = 60;
int main(void)
{
	using namespace std;

	char filename[SIZE];
	ifstream fin;
	cout << "Enter name of data file: ";
	cin.getline(filename, SIZE);
	fin.open(filename);
	if (!fin.is_open())
	{
		cout << "Could not open the file " << filename << endl;
		cout << "Program terminating.\n";
		exit(EXIT_FAILURE);
	}
	double value;
	double sum = 0.0;
	int count = 0;

	fin >> value;
	while (fin.good())
	{
		++count;
		sum += value;
		fin >> value;
	}
	if (fin.eof())
	{
		cout << "End of file reached.\n";
	}
	else if (fin.fail())
		cout << "Input terminated by data mismatch.\n";
	else
		cout << "Input terminated for unkown reason.\n";
	if (count == 0)
	{
		cout << "No data processed.\n";
	}
	else
	{
		cout << "Items read: " << count << endl;
		cout << "Sum: " << sum << endl;
		cout << "Average: " << sum / count << endl;
	}
	fin.close();
	system("pause");
	return 0;
}
注意点:
a、头文件中引入了cstdlib用于程序出现错误时的exit()方法使用;
b、使用fin.open(filename)后要判断文件是否被正确打开fin.is_open(),以免发生错误;
c、读取文件时要检查读取文件不应超过EOF;
d、读取文件要检查类型是否匹配,遇到不匹配fail()方法将返回true;
e、使用good()方法,在没有发生任务错误时返回为true;
输出:
(1)打开读取scores.txt文件格式
2)控制台输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值