您的位置:首页 > 其它

Z02 fstream中ifstream的简单用法

2017-10-28 22:22 363 查看

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)控制台输出

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: