﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-http://alantop.5166.info 电子海图开发QQ群 40968136-随笔分类-C++</title><link>http://www.cppblog.com/alantop/category/1645.html</link><description>专注于 股票数据格式 MT4智能交易系统开发 电子海图 VTS（S52 S57 AIS）</description><language>zh-cn</language><lastBuildDate>Thu, 02 Apr 2009 01:09:13 GMT</lastBuildDate><pubDate>Thu, 02 Apr 2009 01:09:13 GMT</pubDate><ttl>60</ttl><item><title>string和memset</title><link>http://www.cppblog.com/alantop/archive/2008/09/23/62633.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 23 Sep 2008 14:10:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/09/23/62633.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/62633.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/09/23/62633.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/62633.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/62633.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 有些东西可能很简单，我们大家不留意。<br><br>string大家都在用，string可以用memset吗？&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/09/23/62633.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/62633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-09-23 22:10 <a href="http://www.cppblog.com/alantop/archive/2008/09/23/62633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vs 2005 sp1 安装失败的解决方案 安装VS2005 sp1的方法</title><link>http://www.cppblog.com/alantop/archive/2008/05/21/50629.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Wed, 21 May 2008 04:42:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/05/21/50629.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/50629.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/05/21/50629.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/50629.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/50629.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: vs 2005 sp1 安装失败的解决方案 安装VS2005 sp1的方法&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/05/21/50629.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/50629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-05-21 12:42 <a href="http://www.cppblog.com/alantop/archive/2008/05/21/50629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用了10年vc6，居然出了这样个怪事，debug工具条不见了，大家参看视频</title><link>http://www.cppblog.com/alantop/archive/2008/05/16/50049.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Fri, 16 May 2008 07:55:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/05/16/50049.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/50049.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/05/16/50049.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/50049.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/50049.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用了10年vc6，居然出了这样个怪事，debug工具条不见了，大家参看视频&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/05/16/50049.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/50049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-05-16 15:55 <a href="http://www.cppblog.com/alantop/archive/2008/05/16/50049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>m_hWnd是CWnd的一个成员</title><link>http://www.cppblog.com/alantop/archive/2008/05/15/49992.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Thu, 15 May 2008 14:29:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/05/15/49992.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/49992.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/05/15/49992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/49992.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/49992.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: m_hWnd是CWnd的一个成员&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/05/15/49992.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/49992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-05-15 22:29 <a href="http://www.cppblog.com/alantop/archive/2008/05/15/49992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>股票数据解析通用工具</title><link>http://www.cppblog.com/alantop/archive/2008/05/15/49991.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Thu, 15 May 2008 13:54:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/05/15/49991.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/49991.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/05/15/49991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/49991.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/49991.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 股票数据解析通用工具&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/05/15/49991.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/49991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-05-15 21:54 <a href="http://www.cppblog.com/alantop/archive/2008/05/15/49991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何将16进制字符串转换成整型？</title><link>http://www.cppblog.com/alantop/archive/2008/05/15/49989.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Thu, 15 May 2008 13:37:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/05/15/49989.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/49989.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/05/15/49989.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/49989.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/49989.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如何将16进制字符串转换成整型？&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/05/15/49989.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/49989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-05-15 21:37 <a href="http://www.cppblog.com/alantop/archive/2008/05/15/49989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FTP开发中下载文件的两种方式</title><link>http://www.cppblog.com/alantop/archive/2008/05/14/49775.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 13 May 2008 17:51:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/05/14/49775.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/49775.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/05/14/49775.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/49775.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/49775.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ftp开发中下载的两种方式 以及碰到的问题。&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/05/14/49775.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/49775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-05-14 01:51 <a href="http://www.cppblog.com/alantop/archive/2008/05/14/49775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>托管代码如何调用非托管代码(c sharp如何调用c++代码)?</title><link>http://www.cppblog.com/alantop/archive/2008/04/16/47318.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Wed, 16 Apr 2008 12:32:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/04/16/47318.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/47318.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/04/16/47318.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/47318.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/47318.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 托管代码如何调用非托管代码(c sharp如何调用c++代码)?&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/04/16/47318.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/47318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-04-16 20:32 <a href="http://www.cppblog.com/alantop/archive/2008/04/16/47318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vc ++ 如何做界面开发？</title><link>http://www.cppblog.com/alantop/archive/2008/04/16/47185.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 15 Apr 2008 23:53:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/04/16/47185.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/47185.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/04/16/47185.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/47185.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/47185.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: vc++k中如何开发界面&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/04/16/47185.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/47185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-04-16 07:53 <a href="http://www.cppblog.com/alantop/archive/2008/04/16/47185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源，跨平台免费C++ IDE ---Code::Block </title><link>http://www.cppblog.com/alantop/archive/2008/03/01/43513.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Sat, 01 Mar 2008 05:02:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/03/01/43513.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/43513.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/03/01/43513.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/43513.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/43513.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code Block 是一个免费, 开源的C++ IDE,它看上去有一个一致的外观，满足用户的需要，具有扩展性和可配置性。<br><br>这个IDE有你需要的所有功能，并且它是跨平台的。<br><br>另外，其具有插件框架，很容易扩展。大量的功能可以通过插件来安装提供。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/03/01/43513.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/43513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-03-01 13:02 <a href="http://www.cppblog.com/alantop/archive/2008/03/01/43513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于阻止迅雷上传,带慢计算机的工具</title><link>http://www.cppblog.com/alantop/archive/2008/02/26/43242.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 26 Feb 2008 02:29:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/02/26/43242.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/43242.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/02/26/43242.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/43242.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/43242.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关于阻止迅雷上传,带慢计算机的工具&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/02/26/43242.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/43242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-02-26 10:29 <a href="http://www.cppblog.com/alantop/archive/2008/02/26/43242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual Studio 2008 已经通过批量许可,零售和MSDN发布</title><link>http://www.cppblog.com/alantop/archive/2008/01/30/42193.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Wed, 30 Jan 2008 03:28:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/01/30/42193.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/42193.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/01/30/42193.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/42193.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/42193.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 微软已经公布了下一代开发平台Visual Studio 2008的发行策略,分别是批量许可,最终零售和MSDN订阅下载.&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/01/30/42193.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/42193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-01-30 11:28 <a href="http://www.cppblog.com/alantop/archive/2008/01/30/42193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vc2008中MFC重大变革-Visual C++ 2008 Feature Pack Beta 发布(附图)</title><link>http://www.cppblog.com/alantop/archive/2008/01/08/40677.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 08 Jan 2008 01:34:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2008/01/08/40677.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/40677.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2008/01/08/40677.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/40677.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/40677.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Visual C++ 2008 Feature Pack Beta的新功能和新特性 vc2008中mfc重大变革 提供下载&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2008/01/08/40677.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/40677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2008-01-08 09:34 <a href="http://www.cppblog.com/alantop/archive/2008/01/08/40677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS2008 Team system 正式版下载和预览图</title><link>http://www.cppblog.com/alantop/archive/2007/11/26/37307.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Mon, 26 Nov 2007 05:10:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/11/26/37307.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/37307.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/11/26/37307.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/37307.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/37307.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: VS2008 Team system 正式版下载和预览图&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2007/11/26/37307.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/37307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-11-26 13:10 <a href="http://www.cppblog.com/alantop/archive/2007/11/26/37307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大智慧新一代日线格式解析（c++源码）</title><link>http://www.cppblog.com/alantop/archive/2007/10/30/35509.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 30 Oct 2007 04:23:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/10/30/35509.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/35509.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/10/30/35509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/35509.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/35509.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 大智慧新一代日线格式解析（c++源码）&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2007/10/30/35509.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/35509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-10-30 12:23 <a href="http://www.cppblog.com/alantop/archive/2007/10/30/35509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大智慧2逐笔数据提取工具</title><link>http://www.cppblog.com/alantop/archive/2007/10/26/35274.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Fri, 26 Oct 2007 14:54:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/10/26/35274.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/35274.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/10/26/35274.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/35274.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/35274.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 大智慧新一代逐笔数据提取工具 (试用版本发布)&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2007/10/26/35274.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/35274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-10-26 22:54 <a href="http://www.cppblog.com/alantop/archive/2007/10/26/35274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vc中的xml开发</title><link>http://www.cppblog.com/alantop/archive/2007/09/04/31546.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 04 Sep 2007 04:07:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/09/04/31546.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/31546.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/09/04/31546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/31546.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/31546.html</trackback:ping><description><![CDATA[<p><strong>1. libxml是一个跨平台库. 基于C语言的xml解析器.</strong></p> <p>其主页和网上内容很多,这里整理一下.</p> <p>libxml源码示例:<a title="http://xmlsoft.org/examples/index.html" href="http://xmlsoft.org/examples/index.html">http://xmlsoft.org/examples/index.html</a></p> <p>libxml参考手册:<a title="http://xmlsoft.org/html/index.html" href="http://xmlsoft.org/html/index.html">http://xmlsoft.org/html/index.html</a></p> <p>主页: <a title="http://xmlsoft.org/" href="http://xmlsoft.org/">http://xmlsoft.org/</a></p> <p>一个很详细的教程:<a title="http://hi.baidu.com/%CE%DA%D1%BB%C3%F7/blog/item/06df91547c79171e3a29358e.html" href="http://hi.baidu.com/%CE%DA%D1%BB%C3%F7/blog/item/06df91547c79171e3a29358e.html"><a title="http://blog.chinaunix.net/u/14063/showart_98851.html" href="http://blog.chinaunix.net/u/14063/showart_98851.html">http://blog.chinaunix.net/u/14063/showart_98851.html</a></a></p> <p>&nbsp;</p> <p><strong>2. 利用msxml4.0 sp2解析xml</strong></p> <p><a title="http://blog.csdn.net/max2008/archive/2007/06/11/1647613.aspx" href="http://blog.csdn.net/max2008/archive/2007/06/11/1647613.aspx">http://blog.csdn.net/max2008/archive/2007/06/11/1647613.aspx</a></p> <p>&nbsp;</p> <p><strong>3.cmarkup</strong></p> <p><strong>Homepage: <a href="http://www.firstobject.com/">http://www.firstobject.com/</a> </strong></p> <p><a title="http://www.cnblogs.com/bingxuefly/archive/2007/04/23/724318.html" href="http://www.cnblogs.com/bingxuefly/archive/2007/04/23/724318.html">http://www.cnblogs.com/bingxuefly/archive/2007/04/23/724318.html</a></p><img src ="http://www.cppblog.com/alantop/aggbug/31546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-09-04 12:07 <a href="http://www.cppblog.com/alantop/archive/2007/09/04/31546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谷歌百度一起搜程序源码</title><link>http://www.cppblog.com/alantop/archive/2007/09/04/31523.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 04 Sep 2007 01:16:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/09/04/31523.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/31523.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/09/04/31523.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/31523.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/31523.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一次搜索google和百度的程序,谷歌百度一起搜 源码发布（c++版本和ASP.net版本）&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2007/09/04/31523.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/31523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-09-04 09:16 <a href="http://www.cppblog.com/alantop/archive/2007/09/04/31523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个封装文件操作和目录操作的类</title><link>http://www.cppblog.com/alantop/archive/2007/08/15/30047.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Wed, 15 Aug 2007 00:23:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/08/15/30047.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/30047.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/08/15/30047.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/30047.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/30047.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 经常在项目中遇到文件和目录操作。拷贝，删除，移动，最讨厌的可能就是枚举了。  这里提供一个封装文件和目录的操作类。  &nbsp;  此类封装了一些高级的文件和目录操作。例如删除、建立、拷贝、移动、枚举文件和目录。  所有的错误处理都内置了。并且用bool值类型来表示其成功与否。如果失败，可以调用GetErrorMessage  函数得到CString类型的错误信息。  用法：这个类只需要建立CD...&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2007/08/15/30047.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/30047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-08-15 08:23 <a href="http://www.cppblog.com/alantop/archive/2007/08/15/30047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个不错的免费界面库</title><link>http://www.cppblog.com/alantop/archive/2007/07/31/29084.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 31 Jul 2007 08:31:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/31/29084.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/29084.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/31/29084.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/29084.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/29084.html</trackback:ping><description><![CDATA[<a href="http://www.gardenui.com/index.aspx">http://www.gardenui.com/index.aspx</a><br><br>界面库图片<br>对话框<br><img height=600 alt="" src="http://www.cppblog.com/images/cppblog_com/alantop/01.JPG" width=300 border=0><br><br>多文档<br><img height=768 alt="" src="http://www.cppblog.com/images/cppblog_com/alantop/02.JPG" width=988 border=0><br><br>单文档<br><img height=768 alt="" src="http://www.cppblog.com/images/cppblog_com/alantop/03.JPG" width=988 border=0><br>
<img src ="http://www.cppblog.com/alantop/aggbug/29084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-31 16:31 <a href="http://www.cppblog.com/alantop/archive/2007/07/31/29084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bitset::flip的含义和用法：</title><link>http://www.cppblog.com/alantop/archive/2007/07/11/27866.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Wed, 11 Jul 2007 06:12:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/11/27866.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27866.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/11/27866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27866.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27866.html</trackback:ping><description><![CDATA[<p>bitset::flip：反转所有位，或者指定的位。 <p>Toggles the value of all the bits in a bitset or toggles a single bit at a specified position. <p>&nbsp; <p>反转：原来是1，反转后就是0；如果原来是0，toggle后就是1. <p>不带参数调用，就是反转所有位。 <p>带参数，即是从右边数0开始数，反转第几位。（注意：两点 1是从右边数，2是从0开始） <p>&nbsp; <p>// bitset_flip.cpp<br>// compile with: /EHsc<br>#include &lt;bitset&gt;<br>#include &lt;iostream&gt;  <p>int main( )<br>{<br>&nbsp;&nbsp;&nbsp; using namespace std;<br>&nbsp;&nbsp;&nbsp; bitset&lt;5&gt; b1 ( 6 );  <p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "The collection of bits in the original bitset is: ( "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; b1 &lt;&lt; " )" &lt;&lt; endl;  <p>&nbsp;&nbsp;&nbsp; bitset&lt;5&gt; fb1;<br>&nbsp;&nbsp;&nbsp; fb1 = b1.flip ( );  <p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "After flipping all the bits, the bitset becomes: ( "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; fb1 &lt;&lt; " )" &lt;&lt; endl;  <p>&nbsp;&nbsp;&nbsp; bitset&lt;5&gt; f3b1;<br>&nbsp;&nbsp;&nbsp; f3b1 = b1.flip ( 0 );  <p>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "After flipping the fourth bit, the bitset becomes: ( "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; f3b1 &lt;&lt; " )" &lt;&lt; endl &lt;&lt; endl;  <p>&nbsp;&nbsp;&nbsp; bitset&lt;5&gt; b2;<br>&nbsp;&nbsp;&nbsp; int i;<br>&nbsp;&nbsp;&nbsp; for ( i = 0 ; i &lt;= 4 ; i++ )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b2.flip(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; b2 &lt;&lt; "&nbsp; The bit flipped is in position "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; i &lt;&lt; ".\n";<br>&nbsp;&nbsp;&nbsp; }<br>} <p>&nbsp; <p>运行结果： <p><a href="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/bitsetflip_C6F3/flip.jpg" atomicselection="true"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="229" alt="flip" src="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/bitsetflip_C6F3/flip_thumb.jpg" width="686" border="0"></a><img src ="http://www.cppblog.com/alantop/aggbug/27866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-11 14:12 <a href="http://www.cppblog.com/alantop/archive/2007/07/11/27866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何提取数字和字符混合的字符串</title><link>http://www.cppblog.com/alantop/archive/2007/07/11/27848.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Wed, 11 Jul 2007 02:15:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/11/27848.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27848.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/11/27848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27848.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27848.html</trackback:ping><description><![CDATA[<p>#include &lt;stdlib.h&gt;<br>#include &lt;stdio.h&gt;  <p>int main( void )<br>{<br>&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp; *string, *stopstring;<br>&nbsp;&nbsp;&nbsp; long&nbsp;&nbsp; l;  <p>&nbsp;&nbsp;&nbsp; string = "10110134";<br>&nbsp;&nbsp;&nbsp; l = strtol( string, &amp;stopstring, 10 );<br>&nbsp;&nbsp;&nbsp; printf( "string = %s\n", string );<br>&nbsp;&nbsp;&nbsp; printf("&nbsp;&nbsp; strtol = %ld\n", l );<br>&nbsp;&nbsp;&nbsp; printf("&nbsp;&nbsp; Stopped scan at: %s\n\n", stopstring );<br>}  <img src ="http://www.cppblog.com/alantop/aggbug/27848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-11 10:15 <a href="http://www.cppblog.com/alantop/archive/2007/07/11/27848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用bitset做十进制、二进制的转换</title><link>http://www.cppblog.com/alantop/archive/2007/07/11/27845.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Wed, 11 Jul 2007 01:47:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/11/27845.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27845.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/11/27845.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27845.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27845.html</trackback:ping><description><![CDATA[<p>例子一、十进制转换二进制  <p>// bitset_bitset.cpp<br>// compile with: /EHsc<br>#include &lt;bitset&gt;<br>#include &lt;iostream&gt;  <p>int main( )<br>{<br>&nbsp;&nbsp;&nbsp; // Using the default constructor<br>&nbsp;&nbsp;&nbsp; using namespace std;  <p>&nbsp;&nbsp;&nbsp; // Using the second member function<br>&nbsp;&nbsp;&nbsp; bitset&lt;20&gt; b1 ( 5 );<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "The set of bits in bitset&lt;5&gt; b1( 5 ) is: ( "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; b1 &lt;&lt; " )." &lt;&lt; endl;  <p>}</p> <p>&nbsp;</p> <p>例子二、二进制转换十进制  <p>#include &lt;bitset&gt;<br>#include &lt;iostream&gt;  <p>void main()<br>{<br>&nbsp;&nbsp;&nbsp; using namespace std;<br>&nbsp;&nbsp;&nbsp; string bitval5 ("11110011011");<br>&nbsp;&nbsp;&nbsp; int length = strlen("11110011011");<br>&nbsp;&nbsp;&nbsp; bitset&lt;11&gt; b5 ( bitval5);<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; b5 &lt;&lt; endl;<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; b5.to_ulong( ) &lt;&lt; endl;<br>}  <p>&nbsp; <p>例子三、支持指针<br>#include &lt;bitset&gt;<br>#include &lt;iostream&gt;  <p>void main()<br>{<br>&nbsp;&nbsp;&nbsp; using namespace std;<br>&nbsp;&nbsp;&nbsp; char p[] = "11110011011";  <p>&nbsp;&nbsp;&nbsp; bitset&lt;50&gt; b5 ( p);<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; b5 &lt;&lt; endl;<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; b5.to_ulong( ) &lt;&lt; endl;<br>} <img src ="http://www.cppblog.com/alantop/aggbug/27845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-11 09:47 <a href="http://www.cppblog.com/alantop/archive/2007/07/11/27845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>explicit的用法</title><link>http://www.cppblog.com/alantop/archive/2007/07/10/27826.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 10 Jul 2007 11:50:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/10/27826.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27826.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/10/27826.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27826.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27826.html</trackback:ping><description><![CDATA[<p>explicit用法，防止对象隐式被转换。
<p>例子一：隐式转换
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;C<br>{<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;(&nbsp;int&nbsp;j&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br>};<br>C</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">C&nbsp;(int&nbsp;j)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;j;<br>}<br>int&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;c(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">5被隐式转换</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">}&nbsp;</span></div>
<p>&nbsp;
<p>&nbsp;
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">c&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;&nbsp;相当于<br><br><br>C&nbsp;temp(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;实例化一个临时对象,</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">c&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;temp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;用&nbsp;=&nbsp;赋值</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">temp</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">::~</span><span style="COLOR: #000000">C();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;temp&nbsp;的析构函数被激活<br></span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>如果类内的成员是一个指针，这种隐式转换是很危险的。为了防止这种隐式转换，我们把&nbsp;&nbsp;&nbsp; C ( int j ); 改写为explicit &nbsp;&nbsp;&nbsp; C ( int j );即可。</p>
<p>&nbsp;</p>
<p>这下编译的时候，会不允许这种隐式的转换，出现如下提示：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">Compiling</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/dot.gif"></span><span style="COLOR: #000000"><br>test</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">cpp<br>D</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">\DATUM\DATUM\PROJECT\Test_muable\test</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">cpp(</span><span style="COLOR: #000000">14</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;error&nbsp;C2679</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;binary&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;no&nbsp;operator&nbsp;</span><span style="COLOR: #008080">defined</span><span style="COLOR: #000000">&nbsp;which&nbsp;takes&nbsp;a&nbsp;right</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">hand&nbsp;operand&nbsp;of&nbsp;type&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">const&nbsp;int</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;(or&nbsp;there&nbsp;is&nbsp;no&nbsp;acceptable&nbsp;conversion)<br>Error&nbsp;executing&nbsp;cl</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">exe</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">&nbsp;<br><br>Test_muable</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">exe&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;error(s)</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;warning(s)&nbsp;<br></span></div>
<img src ="http://www.cppblog.com/alantop/aggbug/27826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-10 19:50 <a href="http://www.cppblog.com/alantop/archive/2007/07/10/27826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>stringstream的用法</title><link>http://www.cppblog.com/alantop/archive/2007/07/10/27823.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 10 Jul 2007 11:07:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/10/27823.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27823.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/10/27823.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27823.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27823.html</trackback:ping><description><![CDATA[<p>stringstream通常是用来做数据转换的。</p>
<p>相比c库的转换，它更加安全，自动和直接。</p>
<p>&nbsp;</p>
<p>例子一：基本数据类型转换例子 int转string</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">#</span><span style="COLOR: #008000">include&nbsp;&lt;string&gt;</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">include&nbsp;&lt;sstream&gt;</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">include&nbsp;&lt;iostream&gt;&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>int&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">stringstream&nbsp;stream;<br>&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;result;<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;i;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将int输入流</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;result;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">从stream中抽取前面插入的int值</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;result&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">endl;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;print&nbsp;the&nbsp;string&nbsp;"1000"</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">}&nbsp;<br></span></div>
<p>&nbsp;
<p>&nbsp;</p>
<p>运行结果：</p>
<p><a href="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/001.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=94 alt=001 src="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/001_thumb.jpg" width=470 border=0></a> </p>
<p>&nbsp;</p>
<p>例子二：除了基本类型的转换，也支持char *的转换。</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">#</span><span style="COLOR: #008000">include&nbsp;&lt;sstream&gt;</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">include&nbsp;&lt;iostream&gt;&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>int&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">stringstream&nbsp;stream;<br>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;result[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">8888</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">向stream中插入8888</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;result;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">抽取stream中的值到result</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;result&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">endl;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;屏幕显示&nbsp;"8888"</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">}&nbsp;<br></span></div>
<p>&nbsp;
<p>&nbsp;
<p><a href="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/002.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=81 alt=002 src="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/002_thumb.jpg" width=479 border=0></a>
<p>&nbsp;
<p>例子三：再进行多次转换的时候，必须调用stringstream的成员函数clear().
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">#</span><span style="COLOR: #008000">include&nbsp;&lt;sstream&gt;</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">include&nbsp;&lt;iostream&gt;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">int&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">stringstream&nbsp;stream;<br>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;first</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;second;<br>&nbsp;&nbsp;&nbsp;&nbsp;stream</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">456</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">插入字符串</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;first;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">转换成int</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;first&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;stream</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">clear();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">在进行多次转换前，必须清除stream</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">插入bool值</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;second;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">提取出int</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;second&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;std</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">endl;<br>}&nbsp;</span></div>
<p>&nbsp;
<p>运行clear的结果
<p><a href="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/003.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=101 alt=003 src="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/003_thumb.jpg" width=485 border=0></a>
<p>没有运行clear的结果
<p><a href="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/004.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=94 alt=004 src="http://www.cppblog.com/images/cppblog_com/alantop/WindowsLiveWriter/stringstream_10C06/004_thumb.jpg" width=484 border=0></a></p>
<img src ="http://www.cppblog.com/alantop/aggbug/27823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-10 19:07 <a href="http://www.cppblog.com/alantop/archive/2007/07/10/27823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mutable的用法</title><link>http://www.cppblog.com/alantop/archive/2007/07/10/27818.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Tue, 10 Jul 2007 09:19:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/10/27818.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27818.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/10/27818.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27818.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27818.html</trackback:ping><description><![CDATA[<p>很多人看到这个c++关键字很迷茫。不知道怎么使用。</p>
<p>先简要说明一下，这个关键字只能用于非静态和非常量数据成员。如果一个类的成员被指定为mutable类型，那么调用const成员函数就可以为这个声明为mutalbe类型的成员赋值。</p>
<p>下面看一个例子：<br></p>
<p>&#160;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;A<br>{<br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;flag;<br>&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;test()&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>};&nbsp;<br><br>void&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">test();<br>}&nbsp;<br></span></div>
<p><br><br>放在编译器下，出现如下错误：<br><br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">--------------------</span><span style="COLOR: #000000">Configuration</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;Test_muable&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;Win32&nbsp;Debug</span><span style="COLOR: #000000">--------------------</span><span style="COLOR: #000000"><br>Compiling</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/dot.gif"></span><span style="COLOR: #000000"><br>test</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">cpp<br>D</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">\Datum\Datum\Project\Test_muable\test</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">cpp(</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;error&nbsp;C2166</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">&nbsp;l</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">value&nbsp;specifies&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"><br>Error&nbsp;executing&nbsp;cl</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">exe</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">&nbsp;<br><br>Test_muable</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">exe&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;error(s)</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;warning(s)&nbsp;<br></span></div>
<p>&nbsp;
<p>看mutable的定义，知道只需把 flag类型前加mutable即可。</p>
<img src ="http://www.cppblog.com/alantop/aggbug/27818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-10 17:19 <a href="http://www.cppblog.com/alantop/archive/2007/07/10/27818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++读写文件和测试程序运行时间的例子</title><link>http://www.cppblog.com/alantop/archive/2007/07/09/27739.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Mon, 09 Jul 2007 07:05:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/09/27739.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27739.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/09/27739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27739.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27739.html</trackback:ping><description><![CDATA[<p>例子完整代码：<a title="http://zhmster.googlepages.com/ReadFile.rar" href="http://zhmster.googlepages.com/ReadFile.rar">http://zhmster.googlepages.com/ReadFile.rar</a></p> <p>例子功能简介：程序中google.dic是我的google输入法的词库。</p> <p>本段代码功能：就是把这个文件重新按照词频排序。把词频高的放在前面。</p> <p>&nbsp;</p> <p>代码是我一个学生作品：我做了小部分修改。</p> <p>&nbsp;</p> <p>代码演示了如下的技术：</p> <p>1. c++读写文件</p> <p>2. 如何测试一个程序的运行时间。程序中calctime类可以复用。大家只要在程序开始声明一下即可。</p> <p>3. 重载str_line这个类的&lt;操作符。以此可以利用链表的排序函数来排序。</p> <p>&nbsp;</p> <p>#include &lt;list&gt;<br>#include &lt;string&gt;<br>#include &lt;iostream&gt;<br>#include &lt;fstream&gt;&nbsp;&nbsp; <br>#include &lt;algorithm&gt;<br>#include &lt;stdio.h&gt;<br>#include &lt;time.h&gt;  <p>using namespace std; <br>#pragma warning ( disable : 4786 )  <p>struct str_line <br>{<br>&nbsp;&nbsp;&nbsp; string str_first;<br>&nbsp;&nbsp;&nbsp; int int_second;<br>&nbsp;&nbsp;&nbsp; char str_third[1000];<br>&nbsp;&nbsp;&nbsp; bool operator &lt; ( str_line strline_other)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( int_second &lt; strline_other.int_second)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp; }<br>} strline;  <p>class calctime<br>{<br>public:<br>&nbsp;&nbsp;&nbsp; clock_t start, finish;<br>&nbsp;&nbsp;&nbsp; double duration;<br>&nbsp;&nbsp;&nbsp; void showResult()<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; duration = (double)(finish - start) / CLOCKS_PER_SEC;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "%.5f seconds\n", duration );<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; calctime()<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start = clock();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; ~calctime()<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finish = clock();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showResult();<br>&nbsp;&nbsp;&nbsp; }<br>};  <p>void main()<br>{  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calctime calc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifstream in_file("google.dic");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ofstream out_file("out.txt");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list&lt;str_line&gt; save_date_list;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( in_file&gt;&gt;strline.str_first <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; in_file&gt;&gt;strline.int_second<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; in_file.getline(strline.str_third,1000))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; save_date_list.push_back(strline);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; save_date_list.sort();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list&lt;str_line&gt;::iterator iter = save_date_list.begin(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( ; iter!= save_date_list.end(); iter++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //str_line strlineTemp = *iter;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out_file&lt;&lt; iter-&gt;str_first &lt;&lt;"&nbsp;&nbsp; "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; iter-&gt;int_second &lt;&lt;"&nbsp;&nbsp; "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; iter-&gt;str_third &lt;&lt; "\n";&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }  <p>}  <img src ="http://www.cppblog.com/alantop/aggbug/27739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-09 15:05 <a href="http://www.cppblog.com/alantop/archive/2007/07/09/27739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>由浅入深，举例讲解RPC（一）</title><link>http://www.cppblog.com/alantop/archive/2007/07/09/27727.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Mon, 09 Jul 2007 04:41:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/09/27727.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27727.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/09/27727.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27727.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27727.html</trackback:ping><description><![CDATA[&nbsp;
<p><span>关于</span><span>RPC</span><span>的文章很多，但是系统讲解的很少。下面我将写一个系列报道。用代码和论述来把</span><span>rpc</span><span>来讲讲清楚。</span></p>
<p><span>这篇就是开始第一篇了。</span></p>
<p>&nbsp;</p>
<p><span>由于工作比较忙。我们抽出一个星期的时间，有时间会写一点。把这个系列写完。所以，有可能每个系列都比较短些。</span></p>
<p><span>从最基本的讲起，让大家彻底明白</span><span>RPC.</span></p>
<p>&nbsp;</p>
<p><span>好了废话不多说了。正是开始。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>首先，你要用</span><span>RPC</span><span>，必须先搞清楚什么是</span><span>IDL.</span></p>
<p>&nbsp;</p>
<p><span>Rpc</span><span>是什么？</span><span> </span></p>
<p><span><a href="http://www.cppblog.com/alantop/archive/2007/07/09/27717.html">http://www.cppblog.com/alantop/archive/2007/07/09/27717.html</a></span></p>
<p><span>IDL</span><span>是什么？</span></p>
<p><span><a href="http://www.cppblog.com/alantop/archive/2007/07/09/27725.html">http://www.cppblog.com/alantop/archive/2007/07/09/27725.html</a> </span></p>
<p>&nbsp;</p>
<p><span>下来，举个例子。怎么样把一个标准程序改成用</span><span>IDL</span><span>语言写的程序。</span></p>
<p>&nbsp;</p>
<p><span>这是一个标准程序。</span></p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=568>
            <p><span>// File Standalone.cpp</span></p>
            <p><span>#include &lt;iostream&gt;</span></p>
            <p>&nbsp;</p>
            <p><span>// Future server function.</span></p>
            <p><span>void Output(const char* szOutput)</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp; </span>std::cout &lt;&lt; szOutput &lt;&lt; std::endl;</span></p>
            <p><span>}</span></p>
            <p>&nbsp;</p>
            <p><span>int main()</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// Future client call.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>Output("Hello Lonely World!");</span></p>
            <p><span>}</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p><span>下来看我们怎么把它改为一个标准</span><span>IDL</span><span>语言的程序</span></p>
<p><span>用</span><span>IDL</span><span>语言定义接口：</span></p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=568>
            <p><span>// File Example1.idl</span></p>
            <p><span>[</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// A unique identifier that distinguishes this</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// interface from other interfaces.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>uuid(00000001-EAF3-4A7A-A0F2-BCE4C30DA77E),</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// This is version 1.0 of this interface.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>version(1.0),</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// This interface will use an implicit binding</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// handle named hExample1Binding.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>implicit_handle(handle_t hExample1Binding)</span></p>
            <p><span>]</span></p>
            <p><span>interface Example1 // The interface is named Example1</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// A function that takes a zero-terminated string.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>void Output(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>[in, string] const char* szOutput);</span></p>
            <p><span>}</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span>上面这个文件是我们用</span><span>idl</span><span>语言定义的，我们定义了一个接口</span><span>Example1, </span><span>它带有</span><span>uuid</span><span>和</span><span>version. </span><span>这个接口里定义了一个函数</span><span>Output.</span></p>
<p>&nbsp;</p>
<p><span>UUID</span><span>是什么？</span></p>
<p><span><a href="http://www.cppblog.com/alantop/archive/2007/07/09/27726.html">http://www.cppblog.com/alantop/archive/2007/07/09/27726.html</a> </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>接口的</span><span>implicit_handle</span><span>属性，我们后面再讨论。</span></p>
<p>&nbsp;</p>
<p><span>接下来干什么呢？</span></p>
<p><span>我们为了在程序中使用</span><span>idl</span><span>，必须通过通过编译器（</span><span>midl.exe</span><span>）把它翻译成客户代理和服务器存根，</span> <span>代理和存根将在后面被我们的编译器（</span><span>windows</span><span>平台下的</span><span>cl.exe</span><span>）所使用。</span></p>
<p>&nbsp;<br></p>
<p><img height=150 alt="" src="http://www.cppblog.com/images/cppblog_com/alantop/rpcintro1_2.gif" width=363 border=0></p>
<p>&nbsp;</p>
<p><span>改好的服务器端程序：</span></p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=568>
            <p><span>// File Example1Server.cpp</span></p>
            <p><span>#include &lt;iostream&gt;</span></p>
            <p><span>#include "Example1.h"</span></p>
            <p>&nbsp;</p>
            <p><span>// Server function.</span></p>
            <p><span>void Output(const char* szOutput)</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp; </span>std::cout &lt;&lt; szOutput &lt;&lt; std::endl;</span></p>
            <p><span>}</span></p>
            <p>&nbsp;</p>
            <p><span>int main()</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp; </span>RPC_STATUS status;</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// Uses the protocol combined with the endpoint for receiving</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// remote procedure calls.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>status = RpcServerUseProtseqEp(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reinterpret_cast&lt;unsigned char*&gt;("ncacn_ip_tcp"), // Use TCP/IP</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// protocol.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>RPC_C_PROTSEQ_MAX_REQS_DEFAULT, // Backlog queue length for TCP/IP.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reinterpret_cast&lt;unsigned char*&gt;("4747"), // TCP/IP port to use.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NULL); // No security.</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>if (status)</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exit(status);</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// Registers the Example1 interface.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>status = RpcServerRegisterIf(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example1_v1_0_s_ifspec, // Interface to register.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NULL, // Use the MIDL generated entry-point vector.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NULL); // Use the MIDL generated entry-point vector.</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>if (status)</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exit(status);</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// Start to listen for remote procedure</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// calls for all registered interfaces.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// This call will not return until</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// RpcMgmtStopServerListening is called.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>status = RpcServerListen(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>1, // Recommended minimum number of threads.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>RPC_C_LISTEN_MAX_CALLS_DEFAULT, // Recommended </span></p>
            <p><span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>//maximum number of threads.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>FALSE); // Start listening now.</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>if (status)</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exit(status);</span></p>
            <p><span>}</span></p>
            <p>&nbsp;</p>
            <p><span>// Memory allocation function for RPC.</span></p>
            <p><span>// The runtime uses these two functions for allocating/deallocating</span></p>
            <p><span>// enough memory to pass the string to the server.</span></p>
            <p><span>void* __RPC_USER midl_user_allocate(size_t size)</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp; </span>return malloc(size);</span></p>
            <p><span>}</span></p>
            <p>&nbsp;</p>
            <p><span>// Memory deallocation function for RPC.</span></p>
            <p><span>void __RPC_USER midl_user_free(void* p)</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp; </span>free(p);</span></p>
            <p><span>}</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p><span>这是初始化，和注册接口的代码。</span></p>
<p>&nbsp;</p>
<p><span>现在看看怎么写客户端</span></p>
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td vAlign=top width=568>
            <p><span>// File Example1Client.cpp</span></p>
            <p><span>#include &lt;iostream&gt;</span></p>
            <p><span>#include "Example1.h"</span></p>
            <p>&nbsp;</p>
            <p><span>int main()</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp; </span>RPC_STATUS status;</span></p>
            <p><span><span>&nbsp;&nbsp; </span>unsigned char* szStringBinding = NULL;</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// Creates a string binding handle.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// This function is nothing more than a printf.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// Connection is not done here.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>status = RpcStringBindingCompose(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NULL, // UUID to bind to.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reinterpret_cast&lt;unsigned char*&gt;("ncacn_ip_tcp"), // Use TCP/IP</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// protocol.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reinterpret_cast&lt;unsigned char*&gt;("localhost"), // TCP/IP network</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// address to use.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>reinterpret_cast&lt;unsigned char*&gt;("4747"), // TCP/IP port to use.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NULL, // Protocol dependent network options to use.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&amp;szStringBinding); // String binding output.</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>if (status)</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exit(status);</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// Validates the format of the string binding handle and converts</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// it to a binding handle.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>// Connection is not done here either.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>status = RpcBindingFromStringBinding(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>szStringBinding, // The string binding to validate.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&amp;hExample1Binding); // Put the result in the implicit binding</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// handle defined in the IDL file.</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>if (status)</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exit(status);</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>RpcTryExcept</span></p>
            <p><span><span>&nbsp;&nbsp; </span>{</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// Calls the RPC function. The hExample1Binding binding handle</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// is used implicitly.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// Connection is done here.</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Output("Hello RPC World!");</span></p>
            <p><span><span>&nbsp;&nbsp; </span>}</span></p>
            <p><span><span>&nbsp;&nbsp; </span>RpcExcept(1)</span></p>
            <p><span><span>&nbsp;&nbsp; </span>{</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>std::cerr &lt;&lt; "Runtime reported exception " &lt;&lt; RpcExceptionCode()</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;&lt; std::endl;</span></p>
            <p><span><span>&nbsp;&nbsp; </span>}</span></p>
            <p><span><span>&nbsp;&nbsp; </span>RpcEndExcept</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// Free the memory allocated by a string.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>status = RpcStringFree(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&amp;szStringBinding); // String to be freed.</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>if (status)</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exit(status);</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>// Releases binding handle resources and disconnects from the server.</span></p>
            <p><span><span>&nbsp;&nbsp; </span>status = RpcBindingFree(</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&amp;hExample1Binding); // Frees the implicit binding handle defined in</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// the IDL file.</span></p>
            <p>&nbsp;</p>
            <p><span><span>&nbsp;&nbsp; </span>if (status)</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exit(status);</span></p>
            <p><span>}</span></p>
            <p>&nbsp;</p>
            <p><span>// Memory allocation function for RPC.</span></p>
            <p><span>// The runtime uses these two functions for allocating/deallocating</span></p>
            <p><span>// enough memory to pass the string to the server.</span></p>
            <p><span>void* __RPC_USER midl_user_allocate(size_t size)</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp; </span>return malloc(size);</span></p>
            <p><span>}</span></p>
            <p>&nbsp;</p>
            <p><span>// Memory deallocation function for RPC.</span></p>
            <p><span>void __RPC_USER midl_user_free(void* p)</span></p>
            <p><span>{</span></p>
            <p><span><span>&nbsp;&nbsp;&nbsp; </span>free(p);</span></p>
            <p><span>}</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/alantop/aggbug/27727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-09 12:41 <a href="http://www.cppblog.com/alantop/archive/2007/07/09/27727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UUID是什么？</title><link>http://www.cppblog.com/alantop/archive/2007/07/09/27726.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Mon, 09 Jul 2007 04:31:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/09/27726.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27726.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/09/27726.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27726.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27726.html</trackback:ping><description><![CDATA[<font face=宋体>UUID就是Universal Unique IDentifier的缩写，它是一个128位，16字节的值，并确保在时间和空间上唯一。<br>它是把硬件地址、时间以及随机数结合在一起，来确保其唯一性的。</font><br><font face=宋体>一般情况下，生成算法用计算机网卡的地址和一个60位的timestamp生成，时间是以100ns为时间间隔。</font><br><font face=宋体>例如，一台300PL 6862的计算机，主板集成的网卡的MAC地址为00-04-AC-2E-B7-DC，而UUID的最后六个字节也会是0004AC2EB7DC</font>
<img src ="http://www.cppblog.com/alantop/aggbug/27726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-09 12:31 <a href="http://www.cppblog.com/alantop/archive/2007/07/09/27726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IDL是什么？</title><link>http://www.cppblog.com/alantop/archive/2007/07/09/27725.html</link><dc:creator>AlanTop</dc:creator><author>AlanTop</author><pubDate>Mon, 09 Jul 2007 04:22:00 GMT</pubDate><guid>http://www.cppblog.com/alantop/archive/2007/07/09/27725.html</guid><wfw:comment>http://www.cppblog.com/alantop/comments/27725.html</wfw:comment><comments>http://www.cppblog.com/alantop/archive/2007/07/09/27725.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/alantop/comments/commentRss/27725.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/alantop/services/trackbacks/27725.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: IDL(Interface Definition Language)即接口定义语言。&nbsp;&nbsp;<a href='http://www.cppblog.com/alantop/archive/2007/07/09/27725.html'>阅读全文</a><img src ="http://www.cppblog.com/alantop/aggbug/27725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/alantop/" target="_blank">AlanTop</a> 2007-07-09 12:22 <a href="http://www.cppblog.com/alantop/archive/2007/07/09/27725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>