C++中的文件输入/输出(2):读取文件

翻译 2003年08月17日 22:28:00

C++中的文件输入/输出(2)

原作:Ilia Yordanov,  loobian@cpp-home.com

 

读取文件

 

你已经看到了应该如何写文件。现在,当我们已经得到cpp-home.txt文件时,我们将要读取它,并且将内容打印在屏幕上。

首先,我要指出的是,有很多种方法可以读取文件。以后我会向你们介绍所有的方法(就我所知的)。此刻,我先向你展示最佳的方法(我认为的)。

正如你已经熟悉的——我将首先给出一段程序代码,然后,我会详细地对它进行解释说明:

 

#include <fstream.h>

 

void main() //程序从这里开始

{

    ifstream OpenFile("cpp-home.txt");

 

    char ch;

    while(!OpenFile.eof())

    {

       OpenFile.get(ch);

       cout << ch;

    }

    OpenFile.close();

}

 

你想必已经了解首行的意义所在,而剩下的部分将由我为你解释。

ifstream OpenFile(“cpp-home.txt”) —— 我猜它对现在的你而言多少会熟悉些!ifstream表示“input file stream(输入文件流)。在前一节的程序中,出现的则是ofstream,它的意义是“output file stream(输出文件流)。前一节的程序是进行文件的写操作,这就是它用“output(输出)来表示的原因。而本节的程序则是读取一个文件,这就是它用“input(输入)来表示的原因。这一行剩下的代码于你而言应当是熟悉的了:OpenFileifstream类的一个对象,它将关联一个输入文件流;而用引号括住的内容,就是将要打开的文件的名称。

请注意:这里没有对要打开的文件是否存在进行测试!以后我将向你指出如何进行检测。

 

char ch; —— 声明一个字符数组(array of type char)。只是有一点要提醒你:这样的数组(arrays)只能存储一个ASCII字符。

 

while(!OpenFile.eof()) —— 如果已经到达文件末尾,eof( )函数将返回一个非零值。因此我们所设计的这个循环将一直持续,直至我们的文件操作到达文件末尾。这样我们就可以遍历整个文件,以便对它进行读取。

 

OpenFile.get(ch); —— OpenFile是类ifstream的一个对象。该类声明了一个名为get( )的成员函数。只要我们拥有该对象,我们自然就可以调用这个函数。get( )函数从相应的流文件中读出一个字符,并将其返回给变量。在本例中,get( )函数只带一个参数——用于存储所读取的字符的变量。所以,调用OpenFile.get(ch)后程序将会从OpenFile流中读取一个字符并存入变量ch中。

注意:如果你再次调用该函数,它将读取下一个字符,而不是原来的那一个!你过后将理解为什么会这样。

这就是我们要不断反复循环直至读操作到达文件尾的原因。每循环一次,我们将读出一个字符并将它保存在ch中。

 

cout <<  ch; —— 显示ch变量值,它保存了读取得到的字符。

 

File.close(); —— 我们打开了一个流式文件,就需要关闭它。使用close()函数即可将它关闭,这和前一节的一样!

注意:一旦你关闭了一个文件,在你重新打开它之前,你不能再对它进行访问。

 

大功告成了!我希望你能明白我的解释。当你编译并运行这个程序的时候,它应当会输出:

“Hello World, from www.cpp-home.com and Loobian!”

C++学习:在C++中的文件输入和文件输出

C++学习:在C++中的文件输入和文件输出简介: 在C语言中,我们有fread和fwrite用于文件的输入和输出,在java中我们也有inputStream和outPutStream输入输出...
  • qq_29924041
  • qq_29924041
  • 2017年07月07日 22:46
  • 910

Java的输入输出与文件读写(一)

达人科技 2017-01-09 08:56 按照数据的传输方向,流 以是未经加工的原始二进制数据,又可以是经过一定编码处理后符合某种格式规定的 特定数据,即流是由位(bits)组合或者字符(c...
  • u011277123
  • u011277123
  • 2017年01月10日 09:09
  • 891

C++格式化输出,文本文件操作,二进制文件操作

1、格式化输入输出 以左对齐的方式输出整数,域宽为10; 打印有符号数和无符号数200; 将十进制整数200以0X开头的十六进制格式输出; 用前导*格式打印3.911,域宽为10 [提示]   可用i...
  • djh123456021
  • djh123456021
  • 2016年06月17日 20:59
  • 544

C++对ASCII文件的操作例子

从键盘读入一行字符,把其中的字母字符依次放在磁盘文件f2.dat中,再把它从磁盘文件读入程序,将其中的小写字母改写成大写字母,再存入磁盘文件f3.dat. code: #include #incl...
  • QianShouYuZhiBo
  • QianShouYuZhiBo
  • 2013年12月11日 22:10
  • 1218

C++输入(2):文件读取

记录以文件方式读取数据。 如从文件Data.txt中读取数据,文件内容如下: 0 0 3 8 2 2 1 1 5 3 4 8 6 3 5 4 6 4 7 5 思路:先通过文件的行数,得到...
  • foreststar
  • foreststar
  • 2016年12月10日 19:01
  • 70

C++——输入、输出和文件

转载自:http://www.cnblogs.com/mupiaomiao/p/4730757.html 一、C++输入和输出概述   1.1、流和缓冲区   C++程序把输入和输出...
  • w1019220367
  • w1019220367
  • 2016年10月04日 11:44
  • 952

MapReduce多路径输入与多文件输出

我前段时间在完成一个公司业务时,遇到了一个这样的需求:将HDFS上按每天每小时存储的数据进行数据预处理,然后对应按天存储在HDFS........由此可得,MapReduce的输入路径是: /user...
  • u010376788
  • u010376788
  • 2016年05月01日 20:16
  • 11473

关于cmd命令的重定向输出 2>&1

关于cmd命令的重定向输出 2>&1 mycommand >mylog.txt 2>&1 应该是最经典的用法了。 命令的结果可以通过“%>”的形式来定向输出,%表示文件描述符:1为标准...
  • earbao
  • earbao
  • 2016年06月30日 15:01
  • 3303

关于竞赛时输入输出的处理

ACM的输入输出(一) 一般来说ACM的现场赛会规定输入输出 或者是文件输入标准输出 也可能是文件输入文件输出 如果没有规定的话那么一般就是标准的输入输出了 那说一下输入...
  • txl16211
  • txl16211
  • 2014年08月08日 12:27
  • 2630

C++实现读取文本文件数据到vector中

如题,要将如下文本文件读进vector中: #include using namespace std; #include #include #include //将文本文件中得数据读入vect...
  • huangfei711
  • huangfei711
  • 2016年01月21日 10:04
  • 4863
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中的文件输入/输出(2):读取文件
举报原因:
原因补充:

(最多只允许输入30个字)