<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[c++ cou cin打开写入文件方法]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 12 Mar 2008 03:25:27 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	原帖：[url=http://www.hur.cn/program/cc/cc15/200703/120754.html]http://www.hur.cn/program/cc/cc15/200703/120754.html[/url]<br/>文件 I/O 在C++中比烤蛋糕简单多了。 在这篇文章里，我会详细解释ASCII和二进制文件的输入输出的每个细节，值得注意的是，所有这些都是用C++完成的。<br/><br/>　　一、ASCII 输出<br/><br/>为了使用下面的方法, 你必须包含头文件&lt;fstream.h&gt;(译者注：在标准C++中，已经使用&lt;fstream&gt;取代&lt;fstream.h&gt;，所有的C++标准头文件都是无后缀的。)。这是 &lt;iostream.h&gt;的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, &lt;iostream.h&gt; 已经被&lt;fstream.h&gt;包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们，那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。 如果你猜是&quot;fstream,&quot; 恭喜你答对了！ 但这篇文章介绍的方法,我们分别使用&quot;ifstream&quot;?和 &quot;ofstream&quot; 来作输入输出。<br/><br/>　　如果你用过标准控制台流&quot;cin&quot;?和 &quot;cout,&quot; 那现在的事情对你来说很简单。 我们现在开始讲输出部分，首先声明一个类对象。ofstream fout; <br/>　　<br/>　　这就可以了，不过你要打开一个文件的话, 必须像这样调用ofstream::open()。<br/><br/>fout.open(&quot;output.txt&quot;);<br/><br/>　　你也可以把文件名作为构造参数来打开一个文件.<br/><br/>ofstream fout(&quot;output.txt&quot;);<br/><br/>　　这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在，它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件，看起来和&quot;cout&quot;的操作很像。 对不了解控制台输出&quot;cout&quot;的人, 这里有个例子。<br/><br/>int num = 150;<br/>char name[] = &quot;John Doe&quot;;<br/>fout &lt;&lt; &quot;Here is a number: &quot; &lt;&lt; num &lt;&lt; &quot;&#92;n&quot;;<br/>fout &lt;&lt; &quot;Now here is a string: &quot; &lt;&lt; name &lt;&lt; &quot;&#92;n&quot;;<br/><br/>　　现在保存文件，你必须关闭文件，或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它，它会自动保存文件。 回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。回写看起来像另一次输出, 然后调用方法关闭。像这样：<br/><br/>fout &lt;&lt; flush; fout.close();<br/><br/>　　 现在你用文本编辑器打开文件，内容看起来是这样：<br/><br/>　　Here is a number: 150 Now here is a string: John Doe<br/><br/>　　很简单吧! 现在继续文件输入, 需要一点技巧, 所以先确认你已经明白了流操作，对 &quot;&lt;&lt;&quot; 和&quot;&gt;&gt;&quot; 比较熟悉了, 因为你接下来还要用到他们。继续…<br/><br/>　　二、ASCII 输入<br/><br/>　　输入和&quot;cin&quot; 流很像. 和刚刚讨论的输出流很像, 但你要考虑几件事情。在我们开始复杂的内容之前, 先看一个文本：<br/><br/>　　12 GameDev 15.45 L This is really awesome!<br/><br/>　　为了打开这个文件，你必须创建一个in-stream对象,?像这样。<br/><br/>ifstream fin(&quot;input.txt&quot;);<br/><br/>　　现在读入前四行. 你还记得怎么用&quot;&lt;&lt;&quot; 操作符往流里插入变量和符号吧？好,?在 &quot;&lt;&lt;&quot; (插入)?操作符之后，是&quot;&gt;&gt;&quot; (提取) 操作符. 使用方法是一样的. 看这个代码片段.<br/><br/>int number;<br/>float real;<br/>char letter, word[8];<br/>fin &gt;&gt; number; fin &gt;&gt; word; fin &gt;&gt; real; fin &gt;&gt; letter;<br/><br/>　　也可以把这四行读取文件的代码写为更简单的一行。<br/><br/>fin &gt;&gt; number &gt;&gt; word &gt;&gt; real &gt;&gt; letter;<br/><br/>　　它是如何运作的呢? 文件的每个空白之后, &quot;&gt;&gt;&quot; 操作符会停止读取内容, 直到遇到另一个&gt;&gt;操作符. 因为我们读取的每一行都被换行符分割开(是空白字符), &quot;&gt;&gt;&quot; 操作符只把这一行的内容读入变量。这就是这个代码也能正常工作的原因。但是，可别忘了文件的最后一行。<br/><br/>　　This is really awesome!<br/><br/>　　如果你想把整行读入一个char数组, 我们没办法用&quot;&gt;&gt;&quot;?操作符，因为每个单词之间的空格（空白字符）会中止文件的读取。为了验证：<br/><br/>char sentence[101]; fin &gt;&gt; sentence;<br/><br/>　　我们想包含整个句子, &quot;This is really awesome!&quot; 但是因为空白, 现在它只包含了&quot;This&quot;. 很明显, 肯定有读取整行的方法, 它就是getline()。这就是我们要做的。<br/><br/>fin.getline(sentence, 100);<br/><br/><br/>　　这是函数参数. 第一个参数显然是用来接受的char数组. 第二个参数是在遇到换行符之前，数组允许接受的最大元素数量. 现在我们得到了想要的结果：“This is really awesome!”。<br/><br/>　　你应该已经知道如何读取和写入ASCII文件了。但我们还不能罢休，因为二进制文件还在等着我们。<br/><br/><br/><br/>#include &lt;iostream&gt;<br/>#include &lt;string&gt;<br/>#include &lt;fstream&gt;<br/>using namespace std;<br/>int main()<br/>{<br/>ofstream fout(&quot;output.txt&quot;);<br/>int num = 150;<br/>char name[] = &quot;John Doe&quot;;<br/>fout &lt;&lt; &quot;Here is a number: &quot; &lt;&lt; num &lt;&lt; &quot;&#92;n&quot;;<br/>fout &lt;&lt; &quot;Now here is a string: &quot; &lt;&lt; name &lt;&lt; &quot;&#92;n&quot;;<br/>}<br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] c++ cou cin打开写入文件方法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>