<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>转烛空间c++ &#187; </title>
	<atom:link href="http://wangliping.net/tag/c/feed" rel="self" type="application/rss+xml" />
	<link>http://wangliping.net</link>
	<description>记录生活，学习技术</description>
	<lastBuildDate>Fri, 30 Jul 2010 02:30:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C语言实现文件查找操作</title>
		<link>http://wangliping.net/c-file-find-out</link>
		<comments>http://wangliping.net/c-file-find-out#comments</comments>
		<pubDate>Thu, 11 Mar 2010 04:51:47 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://wangliping.net/c-file-find-out</guid>
		<description><![CDATA[在文件操作过程中，免不得要去查找文件之类的。虽然说Windows的API提供了不少这样的接口，但是还是比较倾向于C和C++之类的库。以下就用例子来做这样的工作，程序本身当然还有不少不成熟之处，编译工具用的是Dev C++，编译环境建立在WindowsXP上。]]></description>
			<content:encoded><![CDATA[<p>　　在文件操作过程中，免不得要去查找文件之类的。虽然说Windows的API提供了不少这样的接口，但是还是比较倾向于C和C++之类的库。以下就用例子来做这样的工作，程序本身当然还有不少不成熟之处，编译工具用的是Dev C++，编译环境建立在WindowsXP上。</p>
<p><span id="more-648"></span>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,128,128)">#include &lt;cstdlib&gt;</span><br /><span style="color: rgb(0,128,128)">#include &lt;iostream&gt;</span><br /><span style="color: rgb(0,128,128)">#include &lt;string.h&gt;&nbsp; </span><br /><span style="color: rgb(0,128,128)">#include &lt;dir.h&gt;</span></p>
<p><span style="color: rgb(0,0,0)">using</span> <span style="color: rgb(0,0,0)">namespace</span> <span style="color: rgb(0,0,0)">std</span>;</p>
<p><span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">main</span>(<span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">argc</span><span style="color: rgb(0,0,0)">,</span> <span style="font-weight: bold; color: rgb(0,0,128)">char</span> <span style="color: rgb(0,0,0)">*</span><span style="color: rgb(0,0,0)">argv</span><span style="color: rgb(0,0,0)">[])</span><br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">struct</span> <span style="color: rgb(0,0,0)">_finddata_t</span> <span style="color: rgb(0,0,0)">myfile</span>;<br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">char</span> <span style="color: rgb(0,0,0)">path</span><span style="color: rgb(0,0,0)">[</span><span style="color: rgb(0,0,255)">256</span><span style="color: rgb(0,0,0)">];</span><br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">char</span> <span style="color: rgb(0,0,0)">extension</span><span style="color: rgb(0,0,0)">[</span><span style="color: rgb(0,0,255)">20</span><span style="color: rgb(0,0,0)">];</span><br />&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"Please input the extension of the file: "</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">scanf</span>(<span style="color: rgb(0,0,255)">"%s"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">extension</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">sprintf</span>(<span style="color: rgb(0,0,0)">path</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,255)">"D:</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">Work</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">*.%s"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">extension</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"List of the .%s files:</span><span style="color: rgb(0,0,255)">\n</span><span style="color: rgb(0,0,255)">"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">extension</span>);<br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">long</span>&nbsp; <span style="color: rgb(0,0,0)">done</span> <span style="color: rgb(0,0,0)">=</span> <span style="color: rgb(0,0,0)">_findfirst</span>(<span style="color: rgb(0,0,0)">path</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&amp;</span><span style="color: rgb(0,0,0)">myfile</span>);&nbsp; <br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">int</span>&nbsp;&nbsp; <span style="color: rgb(0,0,0)">find</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,255)">0</span>; <br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">while</span> (<span style="color: rgb(0,0,0)">!</span><span style="color: rgb(0,0,0)">find</span>)<br />&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">if</span> (<span style="color: rgb(0,0,0)">strcmp</span>(<span style="color: rgb(0,0,0)">myfile</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">name</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,255)">"."</span>) <span style="color: rgb(0,0,0)">&amp;&amp;</span> <span style="color: rgb(0,0,0)">strcmp</span>(<span style="color: rgb(0,0,0)">myfile</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">name</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,255)">".."</span>))&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"%s</span><span style="color: rgb(0,0,255)">\n</span><span style="color: rgb(0,0,255)">"</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">myfile</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">name</span>);&nbsp; <br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">find</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">_findnext</span>(<span style="color: rgb(0,0,0)">done</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&amp;</span><span style="color: rgb(0,0,0)">myfile</span>);&nbsp;&nbsp;&nbsp; <br />&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp; <span style="color: rgb(0,0,0)">_findclose</span>(<span style="color: rgb(0,0,0)">done</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">system</span>(<span style="color: rgb(0,0,255)">"PAUSE"</span>);</p>
<p>&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">return</span> <span style="color: rgb(0,0,255)">0</span>;<br /><span style="color: rgb(0,0,0)">}</span></div>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,0,0)"></span>&nbsp;</div>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,0,0)"></span></div>
<p>　　如果是在Linux环境下运行，可能会提示找不到dir.h文件，所以还是在Windows下编译运行吧。下面给一个列出文件目录下所有文件的程序，可以在Windows和Linux都能运行。</p>
<p>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,128,128)">#include &lt;dirent.h&gt;</span></p>
<p><span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">main</span>()<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">DIR</span> <span style="color: rgb(0,0,0)">*</span> <span style="color: rgb(0,0,0)">dir</span>;<br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">struct</span> <span style="color: rgb(0,0,0)">dirent</span> <span style="color: rgb(0,0,0)">*</span> <span style="color: rgb(0,0,0)">ptr</span>;<br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">i</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">dir</span> <span style="color: rgb(0,0,0)">=</span> <span style="color: rgb(0,0,0)">opendir</span>(<span style="color: rgb(0,0,255)">"D:</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">Work</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">"</span>);<br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">while</span>(<span style="color: rgb(0,0,0)">ptr</span> <span style="color: rgb(0,0,0)">=</span> <span style="color: rgb(0,0,0)">readdir</span>(<span style="color: rgb(0,0,0)">dir</span>)) <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"file name: %s</span><span style="color: rgb(0,0,255)">\n</span><span style="color: rgb(0,0,255)">"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">ptr</span><span style="color: rgb(0,0,0)">-&gt;</span><span style="color: rgb(0,0,0)">d_name</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">closedir</span>(<span style="color: rgb(0,0,0)">dir</span>);<br /><span style="color: rgb(0,0,0)">}</span></div>
</p>
<p>　　以上这个参考过别人的程序，大家如果有更多的指教请多多指出。</p>
<p align="center"><strong>原创文章，如需转载请注明【</strong><a href="http://wangliping.net"><strong>转烛空间</strong></a><strong>】：</strong><a href="http://wangliping.net"><strong>http://wangliping.net</strong></a><strong> </strong>
<p align="center"><strong>本文地址：</strong><a href="http://wangliping.net/c-file-find-out"><strong>http://wangliping.net/c-file-find-out</strong></a></p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/c-change-file-permission" title="C语言查看和更改文件的权限">C语言查看和更改文件的权限</a></li><li><a href="http://wangliping.net/cpp-link-sort-override-wrfile" title="C++单链表冒泡排序、运算符重载和文件读写">C++单链表冒泡排序、运算符重载和文件读写</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/c-file-find-out/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C语言查看和更改文件的权限</title>
		<link>http://wangliping.net/c-change-file-permission</link>
		<comments>http://wangliping.net/c-change-file-permission#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:55:44 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[权限]]></category>

		<guid isPermaLink="false">http://wangliping.net/c-change-file-permission</guid>
		<description><![CDATA[有时候需要在程序里获得某个文件的权限信息，正如在Linux下用ls -l命令可以查看权限，那么在C语言中同样有函数可以实现这样的功能。]]></description>
			<content:encoded><![CDATA[<p>　　有时候需要在程序里获得某个文件的权限信息，正如在Linux下用ls -l命令可以查看权限，那么在C语言中同样有函数可以实现这样的功能。</p>
</p>
<p><span id="more-619"></span><br />
<blockquote>
<p>#include &lt;stdio.h&gt;<br />#include &lt;sys/stat.h&gt;
<p>void main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *fileName = "/home/user/test/myfile";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct stat fileInfo;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (stat(fileName, &amp;fileInfo) &lt; 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int mask = 0000777;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int access = mask &amp; fileInfo.st_mode;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%o\n%d\n", access, fileInfo.st_uid);<br />}</p>
</blockquote>
<p>　　关于更多的信息，诸如用户和组的信息，fileInfo.st_uid等等，可以查询stat结构，里面有很多的信息。</p>
<blockquote><p>struct&nbsp; stat<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; dev_t&nbsp;&nbsp;&nbsp; st_dev;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*device*/<br />&nbsp;&nbsp;&nbsp;&nbsp; ino_t&nbsp;&nbsp;&nbsp;&nbsp; st_ino;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*inode*/<br />&nbsp;&nbsp;&nbsp;&nbsp; mode_t st_mode;&nbsp;&nbsp;&nbsp; /*protection*/<br />&nbsp;&nbsp;&nbsp;&nbsp; nlink_t&nbsp;&nbsp; st_nlink;&nbsp;&nbsp;&nbsp;&nbsp; /*number of hard&nbsp; links */<br />&nbsp;&nbsp;&nbsp;&nbsp; uid_t&nbsp;&nbsp;&nbsp;&nbsp; st_uid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*user ID of owner*/<br />&nbsp;&nbsp;&nbsp;&nbsp; gid_t&nbsp;&nbsp;&nbsp;&nbsp; st_gid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*group ID of owner*/<br />&nbsp;&nbsp;&nbsp;&nbsp; dev_t&nbsp;&nbsp;&nbsp; st_rdev;&nbsp;&nbsp;&nbsp;&nbsp; /*device type (if inodedevice)*/<br />&nbsp;&nbsp;&nbsp;&nbsp; off_t&nbsp;&nbsp;&nbsp;&nbsp; st_size;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*total size,&nbsp; in bytes*/<br />&nbsp;&nbsp;&nbsp;&nbsp; unsigned long&nbsp; st_blksize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*blocksize for filesystem I/O*/<br />&nbsp;&nbsp;&nbsp;&nbsp; unsigned long&nbsp; st_blocks;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* number of blocks allocated*/<br />&nbsp;&nbsp;&nbsp;&nbsp; time_t&nbsp;&nbsp; st_atime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*time of last access*/<br />&nbsp;&nbsp;&nbsp;&nbsp; time_t&nbsp;&nbsp; st_mtime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*time of last modification*/<br />&nbsp;&nbsp;&nbsp;&nbsp; time_t&nbsp;&nbsp; st_ctime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*time of last change*/<br />};</p>
</blockquote>
<p>　　当然你也可能更改文件的权限信息，譬如本来一个文件是0600的权限，你想更改为0644的权限，即如同Linux下chmod命令。在Linux下我们可以用：<br />
<blockquote>
<p>#chmod 0644 myfile</p>
</blockquote>
<p>　　来更改文件的权限，那么在C语言下，其实也提供了类似的函数。<br />
<blockquote>
<p>#include &lt;stdio.h&gt;<br />#include &lt;sys/stat.h&gt;
<p>void main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *fileName = "/home/user/test/myfile";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chmod(fileName, 0644);<br />}</p>
</blockquote>
<p>　　其实呢，还有<a href="http://man.chinaunix.net/develop/c&amp;c++/linux_c/main.htm" target="_blank">更多的函数</a>，跟Linux里的命令很相近。</p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/how-to-use-fdisk-in-linux" title="实例解说 fdisk 使用方法">实例解说 fdisk 使用方法</a></li><li><a href="http://wangliping.net/c-file-find-out" title="C语言实现文件查找操作">C语言实现文件查找操作</a></li><li><a href="http://wangliping.net/source-insight-see-source-code" title="Source-Insight-看大规模大工程源代码">Source-Insight-看大规模大工程源代码</a></li><li><a href="http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen" title="Linux下测试键盘鼠标触摸屏触摸板">Linux下测试键盘鼠标触摸屏触摸板</a></li><li><a href="http://wangliping.net/cpp-link-sort-override-wrfile" title="C++单链表冒泡排序、运算符重载和文件读写">C++单链表冒泡排序、运算符重载和文件读写</a></li><li><a href="http://wangliping.net/linux_mem_info_watch" title="Linux内存信息查看相关">Linux内存信息查看相关</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/c-change-file-permission/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++单链表冒泡排序、运算符重载和文件读写</title>
		<link>http://wangliping.net/cpp-link-sort-override-wrfile</link>
		<comments>http://wangliping.net/cpp-link-sort-override-wrfile#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:21:41 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[冒泡法]]></category>
		<category><![CDATA[文件读写]]></category>
		<category><![CDATA[重载运算符]]></category>
		<category><![CDATA[链表]]></category>

		<guid isPermaLink="false">http://wangliping.net/?p=530</guid>
		<description><![CDATA[　　以前写C++程序都是用VC写，严格意义上讲，估计那也不算在写C++，因为都是用着MFC。这两天同学让帮忙写一个布置的作业，一看，显然不需要MFC的（确切地说，不能用MFC），于是先装了个VS2010，后来觉得不需要，装了个Dev　C++，于是再次开始写C++程序的征程。

　　脱离了VC写C++程序，才发现自己一无是处，居然连个最简单的类都不会添加了。这都是以前VC惯的，想以前用VC时，添加类添加函数添加响应函数都是多么地方便多么地简单。等到这一切都需要自己亲手操作时，才知道原来认为不值一提的东西，也是如此艰难。还好，经过看例程和回忆，终于在撰写方面越过去了。

　　这篇文章主要记录一下写这个程序当中用到的单链表冒泡排序、运算符重载和文件读写。]]></description>
			<content:encoded><![CDATA[<p>以前写C++程序都是用VC写，严格意义上讲，估计那也不算在写C++，因为都是用着MFC。这两天同学让帮忙写一个布置的作业，一看，显然不需要MFC的（确切地说，不能用MFC），于是先装了个VS2010，后来觉得不需要，装了个Dev　C++，于是再次开始写C++程序的征程。</p>
<p>脱离了VC写C++程序，才发现自己一无是处，居然连个最简单的类都不会添加了。这都是以前VC惯的，想以前用VC时，添加类添加函数添加响应函数都是多么地方便多么地简单。等到这一切都需要自己亲手操作时，才知道原来认为不值一提的东西，也是如此艰难。还好，经过看例程和回忆，终于在撰写方面越过去了。</p>
<p>这篇文章主要记录一下写这个程序当中用到的单链表冒泡排序、运算符重载和文件读写。</p>
<p><span id="more-530"></span> <strong> 冒泡法排序</strong>相信学过C或者C++的人都不会陌生，简直就是必备单元。不过以前课本学的都是数组的排序，以为将其运用到链表上也是熟练自如，结果依葫芦画瓢时，才发现不是那么简单。节点地址的交换和移动还真不是轻易搞定的事情（当然对于大虾来说，这可能轻而易举）。在一分钟内写完冒泡排序，在10秒后运行发现错了，然后就一直纠缠于此。Google搜索相关方法也无效，网上介绍了一个又一个（其实好多都重复）的单链表冒泡排序，拿来用时没有一个行得通，真不知道是我的问题还是那些方法的问题，最后睡觉时终于明白链表的移动要考虑前节点和后节点，而我，只考虑了后节点。也罢，今早起床后，换了一种思路，大不了咱就不交换节点了，交换数据不就完了。按这个思路，立马生效。</p>
<blockquote><p>for (cur = head; cur-&gt;next != NULL; cur = cur-&gt;next) {<br />
for (cop = cur-&gt;next; cop != NULL; cop = cop-&gt;next) {<br />
if (cur-&gt;salary &lt; cop-&gt;salary) {<br />
swap_data(cur, cop);<br />
}<br />
}<br />
}</p></blockquote>
<blockquote><p>void swap_data(employee* a, employee* b)<br />
{<br />
string id = a-&gt;id;<br />
a-&gt;id = b-&gt;id;<br />
b-&gt;id = id;<br />
}</p></blockquote>
<p>虽然方法笨点，不过效果上还不错，可能在内存消耗和计算时间上有所损耗，下一步研究看看到底单链表如何利用地址交换的方法进行冒泡排序，脑海中已经有些思路了，有时间就试试。正好可以给这个程序做优化。呵呵～</p>
<p>关于<strong>运算符重载</strong>，我以前只是知道C++里有这个东西，并且还是相当先进的一个东西（相比较C而言），当然看书时只是为其叫好，自己倒是一次都没有实际操作过。等到今天要用到时，才发现看过的知识如果不实践，还真是跟没看过没太大的区别，只有概念，完全没法操作。不过Google是个好东西，看了下相关知识，于是开始动手敲&gt;&gt;的运算符重载函数。</p>
<p>由于文件的输入是不可以有空格的，所以对&gt;&gt;重载，使其可以识别空格，如在输入名字的时候，可能就需要有空格，或者其它误操作。操作符重载其实跟写函数一样，只不过它是一个相对比较特殊的函数，有固定的函数命名方式。运算符重载函数可以是全局的，也可以是类的成员函数，以下作为全局函数如此写。这样看来，写运算符重载函数主要是要明白你要做什么，然后依格式明明，再按照普通函数一样去写就好了。</p>
<blockquote><p>employee* operator &gt;&gt; (fstream&amp; file, employee* temp)<br />
{<br />
string id;<br />
char blank;<br />
file&gt;&gt;id;</p>
<p>if (id.length() == 0) {<br />
return NULL;<br />
}</p>
<p>blank = file.get();<br />
while (blank == ' ') {<br />
file&gt;&gt;more;<br />
id = id + blank + more;<br />
blank = file.get();<br />
}</p>
<p>temp-&gt;id = id;<br />
return temp;<br />
}</p></blockquote>
<p>最后一点就是文件的读写了。这个也是以前只是看书，却没有实践的内容，毕竟MFC将其封装得太好了，文件读写直接调用那些类就好了。当然在标准C++里也是调用类了，其实用过之后，觉得也是挺好用的，不过想用深入就是另外一回事了。以下抛砖引玉，当然没对是否存在文件，是否能够写入做判断。</p>
<blockquote><p>ofstream outfile("backup.txt"); //相当于fstream outfile; outfile.open("backup.txt",ios::out);<br />
outfile&lt;&lt;id&lt;&lt;"\t";<br />
outfile&lt;&lt;name&lt;&lt;"\t";<br />
outfile.close();</p></blockquote>
<blockquote><p>fstream f("backup.txt", ios::in);<br />
f&gt;&gt;empl;<br />
f.close();</p></blockquote>
<p>这里对两点做说明，一个就是fstream,ofstream,ifstream，它们用法可以如上，注意看看注释后面的那句，呵呵～还有一点就是"&lt;&lt;""&gt;&gt;"都是以空格类（space/tab/enter）给分隔符，因此你可以f&gt;&gt;a&gt;&gt;b&gt;&gt;c来不停输入。其实理解fstream就跟理解cin和cout一样，只是一个是输入输出到文件，一个是输入输出到屏幕，这样就可以好好理解了。</p>
<p>突然发现，上面所阐述的都好浅显啊。表笑，就算是记录一个过程吧。</p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/c-file-find-out" title="C语言实现文件查找操作">C语言实现文件查找操作</a></li><li><a href="http://wangliping.net/c-change-file-permission" title="C语言查看和更改文件的权限">C语言查看和更改文件的权限</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/cpp-link-sort-override-wrfile/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
