用C 实现简单的文档I/O操作
2008-02-23 05:24:36来源:互联网 阅读 ()
一、ASCII 输出
为了使用下面的方法, 您必须包含头文档<fstream.h>(译者注:在标准C 中,已使用<fstream>取代<fstream.h>,任何的C 标准头文档都是无后缀的。)。这是 <iostream.h>的一个扩展集, 提供有缓冲的文档输入输出操作. 事实上, <iostream.h> 已被<fstream.h>包含了, 所以您不必包含任何这两个文档, 假如您想显式包含他们,那随便您。我们从文档操作类的设计开始, 我会讲解如何进行ASCII I/O操作。 假如您猜是"fstream," 恭喜您答对了! 但这篇文章介绍的方法,我们分别使用"ifstream"?和 "ofstream" 来作输入输出。
假如您用过标准控制台流"cin"?和 "cout," 那现在的事情对您来说很简单。 我们现在开始讲输出部分,首先声明一个类对象。ofstream fout;
这就能够了,但是您要打开一个文档的话, 必须像这样调用ofstream::open()。
fout.open("output.txt"); |
您也能够把文档名作为构造参数来打开一个文档.
ofstream fout("output.txt"); |
这是我们使用的方法, 因为这样创建和打开一个文档看起来更简单. 顺便说一句, 假如您要打开的文档不存在,他会为您创建一个, 所以不用担心文档创建的问题. 现在就输出到文档,看起来和"cout"的操作很像。 对不了解控制台输出"cout"的人, 这里有个例子。
int num = 150; char name[] = "John Doe"; fout << "Here is a number: " << num << "\n"; fout << "Now here is a string: " << name << "\n"; |
现在保存文档,您必须关闭文档,或回写文档缓冲. 文档关闭之后就不能再操作了, 所以只有在您不再操作这个文档的时候才调用他,他会自动保存文档。 回写缓冲区会在保持文档打开的情况下保存文档, 所以只要有必要就使用他。 回写看起来像另一次输出, 然后调用方法关闭。像这样:
fout << flush; fout.close(); |
现在您用文本编辑器打开文档,内容看起来是这样:
Here is a number: 150 Now here is a string: John Doe
很简单吧! 现在继续文档输入, 需要一点技巧, 所以先确认您已明白了流操作,对 "<<" 和">>" 比较熟悉了, 因为您接下来还要用到他们。继续…
二、ASCII 输入
输入和"cin" 流很像. 和刚刚讨论的输出流很像, 但您要考虑几件事情。在我们开始复杂的内容之前, 先看一个文本:
12 GameDev 15.45 L This is really awesome!
为了打开这个文档,您必须创建一个in-stream对象,?像这样。
ifstream fin("input.txt"); |
现在读入前四行. 您还记得怎么用"<<" 操作符往流里插入变量和符号吧?好,?在 "<<" (插入)?操作符之后,是">>" (提取) 操作符. 使用方法是相同的. 看这个代码片段.
int number; float real; char letter, word[8]; fin >> number; fin >> word; fin >> real; fin >> letter; |
也能够把这四行读取文档的代码写为更简单的一行。
fin >> number >> word >> real >> letter; |
他是如何运作的呢? 文档的每个空白之后, ">>" 操作符会停止读取内容, 直到碰到另一个>>操作符. 因为我们读取的每一行都被换行符分割开(是空白字符), ">>" 操作符只把这一行的内容读入变量。这就是这个代码也能正常工作的原因。但是,可别忘了文档的最后一行。
This is really awesome!
假如您想把整行读入一个char数组, 我们没办法用">>"?操作符,因为每个单词之间的空格(空白字符)会中止文档的读取。为了验证:
char sentence[101]; fin >> sentence; |
我们想包含整个句子, "This is really awesome!" 但是因为空白, 现在他只包含了"This". 很明显, 肯定有读取整行的方法, 他就是getline()。这就是我们要做的。
fin.getline(sentence, 100); |
这是函数参数. 第一个参数显然是用来接受的char数组. 第二个参数是在碰到换行符之前,数组允许接受的最大元素数量. 现在我们得到了想要的结果:“This is really awesome!”。
您应该已知道如何读取和写入ASCII文档了。但我们还不能罢休,因为二进制文档还在等着我们。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C 程式设计从零开始之表达式
下一篇: C 程式设计从零开始之赋值操作符
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash