﻿<?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++博客-多一分钟学习，早一秒钟提高-随笔分类-C++</title><link>http://www.cppblog.com/xkjy3000/category/20603.html</link><description>VC++、C++、Socket、DirectUI、wxWidgets、Cocos2d-x、Android、IOS</description><language>zh-cn</language><lastBuildDate>Wed, 28 May 2014 12:20:02 GMT</lastBuildDate><pubDate>Wed, 28 May 2014 12:20:02 GMT</pubDate><ttl>60</ttl><item><title>网络游戏常用类</title><link>http://www.cppblog.com/xkjy3000/archive/2014/05/27/207122.html</link><dc:creator>虚空骄阳</dc:creator><author>虚空骄阳</author><pubDate>Tue, 27 May 2014 13:38:00 GMT</pubDate><guid>http://www.cppblog.com/xkjy3000/archive/2014/05/27/207122.html</guid><wfw:comment>http://www.cppblog.com/xkjy3000/comments/207122.html</wfw:comment><comments>http://www.cppblog.com/xkjy3000/archive/2014/05/27/207122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xkjy3000/comments/commentRss/207122.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xkjy3000/services/trackbacks/207122.html</trackback:ping><description><![CDATA[<div><strong style="color: red;">1、通用单例类<br /></strong><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#ifndef&nbsp;_SINGLETON_H<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;_SINGLETON_H<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;GameGeneric<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&lt;<span style="color: #0000FF; ">class</span>&nbsp;T&gt;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Singleton<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;T*&nbsp;instance()<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(&nbsp;!_instance&nbsp;)<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_instance&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;T;<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;_instance;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">18</span>&nbsp;<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">protected</span>:<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;使用保护构造是为了让用户不能在栈上声明一个实例</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Singleton()&nbsp;{}<br /><span style="color: #008080; ">22</span>&nbsp;<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>:<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;T*&nbsp;_instance;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;实例静态指针</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;};<br /><span style="color: #008080; ">26</span>&nbsp;<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;静态实例指针初始化</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;&lt;<span style="color: #0000FF; ">class</span>&nbsp;T&gt;&nbsp;T*&nbsp;Singleton&lt;T&gt;::_instance&nbsp;=&nbsp;NULL;<br /><span style="color: #008080; ">29</span>&nbsp;<br /><span style="color: #008080; ">30</span>&nbsp;}<br /><span style="color: #008080; ">31</span>&nbsp;<br /><span style="color: #008080; ">32</span>&nbsp;<span style="color: #0000FF; ">#endif</span></div><strong style="color: red;"><br /></strong><div>//使用的时候只需要单件类继承此模板即可。 &nbsp;&nbsp;</div><div>class Test : public Singleton&lt;Test &gt;{...};</div><strong style="color: red;"><br />2、</strong><span style="color: red;"><strong>Dll（so）动态加载<br /></strong></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#ifndef&nbsp;__LIB_DEF_H_<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__LIB_DEF_H_<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;GameGeneric&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;{&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;DLL对象创建辅助类&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;template&lt;<span style="color: #0000FF; ">const</span>&nbsp;TCHAR*&amp;&nbsp;szFileName&gt;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;DllApi<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;BOOL&nbsp;Load()<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;!m_h&nbsp;)<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_h&nbsp;=&nbsp;::LoadLibrary(szFileName);<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_h&nbsp;!=&nbsp;NULL;<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Unload()<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;m_h&nbsp;)<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::FreeLibrary(m_h);<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_h&nbsp;=&nbsp;NULL;<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">protected</span>:&nbsp;&nbsp;<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;HMODULE&nbsp;m_h;&nbsp;&nbsp;<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&lt;<span style="color: #0000FF; ">const</span>&nbsp;TCHAR*&amp;&nbsp;szFileName&gt;&nbsp;HMODULE&nbsp;DllApi&lt;szFileName&gt;::m_h;&nbsp;&nbsp;<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">库文件前后缀&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #008000; "></span>#ifdef&nbsp;WIN32&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__DLL_PREFIX&nbsp;&nbsp;&nbsp;&nbsp;_T("")&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__DLL_SUFFIX&nbsp;&nbsp;&nbsp;&nbsp;_T(".dll")&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">36</span>&nbsp;<span style="color: #0000FF; ">#else</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__DLL_PREFIX&nbsp;&nbsp;&nbsp;&nbsp;_T("lib")&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__DLL_SUFFIX&nbsp;&nbsp;&nbsp;&nbsp;_T(".so")&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">39</span>&nbsp;<span style="color: #0000FF; ">#endif</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;声明DLL文件名常量&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">#define</span>&nbsp;DECLARE_DLL_FILE(module)&nbsp;extern&nbsp;"C"&nbsp;const&nbsp;TCHAR*&nbsp;module;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;定义DLL文件名常量&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">#if</span>&nbsp;!defined(_LIB)&nbsp;&amp;&amp;&nbsp;!defined(_USE_STATIC_LIB)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;DEFINE_DLL_FILE(module)&nbsp;extern&nbsp;"C"&nbsp;const&nbsp;TCHAR*&nbsp;module&nbsp;=&nbsp;_T("./")""__DLL_PREFIX""_T(#module)""__DLL_SUFFIX;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">47</span>&nbsp;<span style="color: #0000FF; ">#else</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;DEFINE_DLL_FILE(module)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">49</span>&nbsp;<span style="color: #0000FF; ">#endif</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">50</span>&nbsp;}&nbsp;&nbsp;<br /><span style="color: #008080; ">51</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">52</span>&nbsp;<span style="color: #0000FF; ">#endif</span></div><span style="color: red;"><strong><br /></strong></span><div>本例中使用了LoadLibrary，是windows的实现方法，在后面平台相关处理中，将linux的函数封装，和windows同名。</div><div>此模板使用方法很简单:</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">#if</span>&nbsp;defined(_LIB)&nbsp;||&nbsp;defined(_USE_STATIC_LIB)&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;静态库版本</span><br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#ifndef&nbsp;_LUA_ENGINE_API<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;_LUA_ENGINE_API&nbsp;IMPORT_API<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#pragma&nbsp;comment(lib,&nbsp;&nbsp;MAKE_LIB_NAME(LuaEngine))<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">#endif</span><br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_LUA_ENGINE_API&nbsp;ILuaEngine*&nbsp;GlobalLuaEngine();<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">#else</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DECLARE_DLL_FILE(LuaEngine);<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;GlobalLuaEngine&nbsp;:&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;DllApi&lt;LuaEngine&gt;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;ILuaEngine*&nbsp;(*CREATE_PROC)();<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILuaEngine*&nbsp;m_p;<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>:<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GlobalLuaEngine()&nbsp;:&nbsp;m_p(NULL)<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load();<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;CREATE_PROC&nbsp;func;<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(func&nbsp;==&nbsp;NULL)&nbsp;func&nbsp;=&nbsp;(CREATE_PROC)::GetProcAddress(m_h,&nbsp;"GlobalLuaEngine");<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(func&nbsp;!=&nbsp;NULL)&nbsp;m_p&nbsp;=&nbsp;func();<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;ILuaEngine*&nbsp;(){&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_p;&nbsp;}<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILuaEngine*&nbsp;<span style="color: #0000FF; ">operator</span>&nbsp;-&gt;(){&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;m_p;&nbsp;}<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br /><span style="color: #008080; ">25</span>&nbsp;<span style="color: #0000FF; ">#endif</span></div><span style="color: red;"><strong><br /></strong></span><div>上面代码所示，LuaEngine是一个dll，我们在加载它的时候，使用了一个额外的类，在他的构造函数里面加载了共享库。而且在应用级上也与平台无关。</div><span style="color: red;"><strong><br />3、</strong></span><span style="color: red;"><strong>跨平台的若干处理<br /></strong></span><div>Windows的处理相当简单，只是定义一些简单的宏：</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;gwindef.h&nbsp;:&nbsp;windows开发定义文件&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; "></span>#ifndef&nbsp;__G_WIN_DEF_H_&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__G_WIN_DEF_H_&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;#include&nbsp;&lt;process.h&gt;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;#include&nbsp;&lt;tchar.h&gt;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;#include&nbsp;&lt;unknwn.h&gt;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;#include&nbsp;&lt;stdio.h&gt;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;#include&nbsp;&lt;stdlib.h&gt;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">12</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;SYS_API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WINAPI&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;STD_CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__stdcall&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">14</span>&nbsp;<span style="color: #0000FF; ">#if</span>&nbsp;!defined(_LIB)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">15</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;EXPORT_API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;"C"&nbsp;_declspec(dllexport)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">16</span>&nbsp;<span style="color: #0000FF; ">#else</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;EXPORT_API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;"C"&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">18</span>&nbsp;<span style="color: #0000FF; ">#endif</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">19</span>&nbsp;<span style="color: #0000FF; ">#if</span>&nbsp;!defined(_LIB)&nbsp;&amp;&amp;&nbsp;!defined(_USE_STATIC_LIB)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">20</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;IMPORT_API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;"C"&nbsp;_declspec(dllimport)&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">21</span>&nbsp;<span style="color: #0000FF; ">#else</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">22</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;IMPORT_API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;"C"&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">23</span>&nbsp;<span style="color: #0000FF; ">#endif</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">25</span>&nbsp;<span style="color: #0000FF; ">#endif</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;ndef&nbsp;__G_WIN_DEF_H_</span></div><span style="color: red;"><strong><br /></strong></span><div>为了开发的时候去除平台无关性，在Linux的开发中，我们需要做一些包装，使其在开发过程中和window代码一致，如下：</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp; 1</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;glindef.h&nbsp;:&nbsp;linux开发定义文件</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000; "></span>#ifndef&nbsp;__G_LIN_DEF_H_<br /><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__G_LIN_DEF_H_<br /><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; "></span>#include&nbsp;&lt;stdlib.h&gt;<br /><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;#include&nbsp;&lt;stdio.h&gt;<br /><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;#include&nbsp;&lt;<span style="color: #0000FF; ">string</span>.h&gt;<br /><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;#include&nbsp;&lt;wchar.h&gt;<br /><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;#include&nbsp;&lt;unistd.h&gt;<br /><span style="color: #008080; ">&nbsp;10</span>&nbsp;#include&nbsp;&lt;pthread.h&gt;<br /><span style="color: #008080; ">&nbsp;11</span>&nbsp;#include&nbsp;&lt;semaphore.h&gt;<br /><span style="color: #008080; ">&nbsp;12</span>&nbsp;#include&nbsp;&lt;errno.h&gt;<br /><span style="color: #008080; ">&nbsp;13</span>&nbsp;#include&nbsp;&lt;sys/times.h&gt;<br /><span style="color: #008080; ">&nbsp;14</span>&nbsp;#include&nbsp;&lt;time.h&gt;<br /><span style="color: #008080; ">&nbsp;15</span>&nbsp;#include&nbsp;&lt;dlfcn.h&gt;<br /><span style="color: #008080; ">&nbsp;16</span>&nbsp;#include&nbsp;&lt;sys/types.h&gt;<br /><span style="color: #008080; ">&nbsp;17</span>&nbsp;#include&nbsp;&lt;linux/unistd.h&gt;<br /><span style="color: #008080; ">&nbsp;18</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;19</span>&nbsp;inline&nbsp;_syscall0(pid_t,&nbsp;gettid)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Using&nbsp;syscall(2)&nbsp;may&nbsp;be&nbsp;preferable;&nbsp;see&nbsp;intro(2)&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;20</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;21</span>&nbsp;#ifdef&nbsp;UNICODE<br /><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;_T(str)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L##str<br /><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #0000FF; ">#else</span><br /><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;_T(str)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str<br /><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #0000FF; ">#endif</span><br /><span style="color: #008080; ">&nbsp;26</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;TRUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br /><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;FALSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br /><span style="color: #008080; ">&nbsp;29</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;MAX_PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;256<br /><span style="color: #008080; ">&nbsp;31</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;SYS_API<br /><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;STD_CALL<br /><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;EXPORT_API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;"C"<br /><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;IMPORT_API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;"C"<br /><span style="color: #008080; ">&nbsp;36</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;HRESULT&nbsp;常量定义</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #808080; "></span>typedef&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HRESULT;<br /><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #0000FF; ">enum</span>&nbsp;HResult<br /><span style="color: #008080; ">&nbsp;40</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_OK&nbsp;=&nbsp;((HRESULT)0x00000000),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;成功，值为0&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_FALSE&nbsp;=&nbsp;((HRESULT)0x00000001),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;成功，但值为1&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_FAIL&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80004005),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;未定义错误&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_NOTIMPL&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80004001),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;接口未实现&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_OUTOFMEMORY&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x8007000E),&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;内存不足&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;46</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_INVALIDARG&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80070057),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;无效参数&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_NOINTERFACE&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80004002),&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;接口不存在&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_POINTER&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80004003),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;无效指针&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_HANDLE&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80070006),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;无效句柄&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_ABORT&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80004004),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;操作被取消&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_ACCESSDENIED&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x80070005),&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;访问拒绝&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_PENDING&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x8000000A),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;操作被挂起&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;53</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_UNEXPECTED&nbsp;=&nbsp;_HRESULT_TYPEDEF_(0x8000FFFF)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;未预料的错误&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;54</span>&nbsp;};<br /><span style="color: #008080; ">&nbsp;55</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;判定&nbsp;HRESULT&nbsp;值是否为成功值</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #808080; "></span><span style="color: #0000FF; ">#define</span>&nbsp;SUCCEEDED(Status)&nbsp;&nbsp;&nbsp;&nbsp;((HRESULT)(Status)&nbsp;&gt;=&nbsp;0)<br /><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;判定&nbsp;HRESULT&nbsp;值是否为失败值</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #808080; "></span><span style="color: #0000FF; ">#define</span>&nbsp;FAILED(Status)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((HRESULT)(Status)&nbsp;&lt;&nbsp;0)<br /><span style="color: #008080; ">&nbsp;60</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;GUID&nbsp;类型定义</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #808080; "></span><span style="color: #008000; ">/*</span><span style="color: #008000; ">*<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #008000; ">要定义&nbsp;GUID&nbsp;常量请使用&nbsp;GUID&nbsp;专门的生成工具（比如&nbsp;VS&nbsp;携带的&nbsp;guidgen.exe&nbsp;程序）来生成，<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #008000; ">以确保其唯一性。<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #008000; ">接口&nbsp;ID（IID）,&nbsp;类&nbsp;ID（CLSID）均为&nbsp;GUID&nbsp;的别名</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;GUID<br /><span style="color: #008080; ">&nbsp;67</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;&nbsp;Data1;<br /><span style="color: #008080; ">&nbsp;69</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">short</span>&nbsp;Data2;<br /><span style="color: #008080; ">&nbsp;70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">short</span>&nbsp;Data3;<br /><span style="color: #008080; ">&nbsp;71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;&nbsp;Data4[8];<br /><span style="color: #008080; ">&nbsp;72</span>&nbsp;};<br /><span style="color: #008080; ">&nbsp;73</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;74</span>&nbsp;typedef&nbsp;GUID&nbsp;IID;<br /><span style="color: #008080; ">&nbsp;75</span>&nbsp;typedef&nbsp;GUID&nbsp;CLSID;<br /><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;REFGUID&nbsp;const&nbsp;GUID&amp;<br /><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;REFIID&nbsp;const&nbsp;IID&amp;<br /><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;REFCLSID&nbsp;const&nbsp;CLSID&amp;<br /><span style="color: #008080; ">&nbsp;79</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;判断两个&nbsp;GUID&nbsp;是否相等（内联版）</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #808080; "></span>inline&nbsp;BOOL&nbsp;InlineIsEqualGUID(REFGUID&nbsp;rguid1,&nbsp;REFGUID&nbsp;rguid2)<br /><span style="color: #008080; ">&nbsp;82</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;83</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid1)[0]&nbsp;==&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid2)[0]&nbsp;&amp;&amp;&nbsp;<br /><span style="color: #008080; ">&nbsp;84</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid1)[1]&nbsp;==&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid2)[1]&nbsp;&amp;&amp;<br /><span style="color: #008080; ">&nbsp;85</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid1)[2]&nbsp;==&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid2)[2]&nbsp;&amp;&amp;<br /><span style="color: #008080; ">&nbsp;86</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid1)[3]&nbsp;==&nbsp;((<span style="color: #0000FF; ">long</span>*)&amp;rguid2)[3];<br /><span style="color: #008080; ">&nbsp;87</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;88</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;判断两个&nbsp;GUID&nbsp;是否相等</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #808080; "></span>inline&nbsp;BOOL&nbsp;IsEqualGUID(REFGUID&nbsp;rguid1,&nbsp;REFGUID&nbsp;rguid2)<br /><span style="color: #008080; ">&nbsp;91</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;92</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;!memcmp(&amp;rguid1,&nbsp;&amp;rguid2,&nbsp;<span style="color: #0000FF; ">sizeof</span>(GUID));<br /><span style="color: #008080; ">&nbsp;93</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;94</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;CopyMemory(dest,&nbsp;src,&nbsp;len)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy((dest),&nbsp;(src),(len))<br /><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;ZeroMemory(dest,&nbsp;len)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset((dest),&nbsp;0,&nbsp;(len))<br /><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;FillMemory(dest,&nbsp;len,&nbsp;value)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset((dest),&nbsp;value,&nbsp;(len))<br /><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;GetCurrentThreadId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gettid<br /><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;OutputDebugString(str)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tprintf(_T("%s"),&nbsp;str)<br /><span style="color: #008080; ">100</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;LoadLibrary(file)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlopen(file,&nbsp;RTLD_NOW)<br /><span style="color: #008080; ">101</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;FreeLibrary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlclose<br /><span style="color: #008080; ">102</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;GetProcAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlsym<br /><span style="color: #008080; ">103</span>&nbsp;<br /><span style="color: #008080; ">104</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;GetLastError()<br /><span style="color: #008080; ">105</span>&nbsp;{<br /><span style="color: #008080; ">106</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;errno;<br /><span style="color: #008080; ">107</span>&nbsp;}<br /><span style="color: #008080; ">108</span>&nbsp;<br /><span style="color: #008080; ">109</span>&nbsp;inline&nbsp;DWORD&nbsp;GetTickCount()<br /><span style="color: #008080; ">110</span>&nbsp;{<br /><span style="color: #008080; ">111</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;clkTck&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">112</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(clkTck&nbsp;==&nbsp;0)&nbsp;clkTck&nbsp;=&nbsp;1000&nbsp;/&nbsp;::sysconf(_SC_CLK_TCK);<br /><span style="color: #008080; ">113</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(DWORD)::times(NULL)&nbsp;*&nbsp;clkTck;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;不能溢出</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #008000; "></span>}<br /><span style="color: #008080; ">115</span>&nbsp;<br /><span style="color: #008080; ">116</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Sleep(DWORD&nbsp;ms)<br /><span style="color: #008080; ">117</span>&nbsp;{<br /><span style="color: #008080; ">118</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;timespec&nbsp;req,&nbsp;rem;<br /><span style="color: #008080; ">119</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req.tv_sec&nbsp;=&nbsp;ms&nbsp;/&nbsp;1000;&nbsp;req.tv_nsec&nbsp;=&nbsp;(ms&nbsp;%&nbsp;1000)&nbsp;*&nbsp;1000000;<br /><span style="color: #008080; ">120</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(::nanosleep(&amp;req,&nbsp;&amp;rem)&nbsp;&amp;&amp;&nbsp;::GetLastError()&nbsp;==&nbsp;EINTR)&nbsp;req&nbsp;=&nbsp;rem;<br /><span style="color: #008080; ">121</span>&nbsp;}<br /><span style="color: #008080; ">122</span>&nbsp;<br /><span style="color: #008080; ">123</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;InterlockedIncrement(<span style="color: #0000FF; ">long</span>&nbsp;<span style="color: #0000FF; ">volatile</span>*&nbsp;v)<br /><span style="color: #008080; ">124</span>&nbsp;{<br /><span style="color: #008080; ">125</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;src&nbsp;=&nbsp;1;<br /><span style="color: #008080; ">126</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Modern&nbsp;486+&nbsp;processor&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">127</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__asm__&nbsp;__volatile__(<br /><span style="color: #008080; ">128</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"lock&nbsp;xaddl&nbsp;%0,&nbsp;%1;"<br /><span style="color: #008080; ">129</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:"=r"(src),&nbsp;"=m"(*v)<br /><span style="color: #008080; ">130</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:"0"(src));<br /><span style="color: #008080; ">131</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;src&nbsp;+&nbsp;1;<br /><span style="color: #008080; ">132</span>&nbsp;}<br /><span style="color: #008080; ">133</span>&nbsp;<br /><span style="color: #008080; ">134</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;InterlockedDecrement(<span style="color: #0000FF; ">long</span>&nbsp;<span style="color: #0000FF; ">volatile</span>*&nbsp;v)<br /><span style="color: #008080; ">135</span>&nbsp;{<br /><span style="color: #008080; ">136</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;src&nbsp;=&nbsp;-1;<br /><span style="color: #008080; ">137</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Modern&nbsp;486+&nbsp;processor&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">138</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__asm__&nbsp;__volatile__(<br /><span style="color: #008080; ">139</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"lock&nbsp;xaddl&nbsp;%0,&nbsp;%1;"<br /><span style="color: #008080; ">140</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:"=r"(src),&nbsp;"=m"(*v)<br /><span style="color: #008080; ">141</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:"0"(src));<br /><span style="color: #008080; ">142</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;src&nbsp;-&nbsp;1;<br /><span style="color: #008080; ">143</span>&nbsp;}<br /><span style="color: #008080; ">144</span>&nbsp;<br /><span style="color: #008080; ">145</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;stricmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcasecmp<br /><span style="color: #008080; ">146</span>&nbsp;<br /><span style="color: #008080; ">147</span>&nbsp;#include&nbsp;&lt;ctype.h&gt;<br /><span style="color: #008080; ">148</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;strupr(<span style="color: #0000FF; ">char</span>&nbsp;*s)<br /><span style="color: #008080; ">149</span>&nbsp;{<br /><span style="color: #008080; ">150</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(*s)<br /><span style="color: #008080; ">151</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">152</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*s&nbsp;=&nbsp;toupper((unsigned&nbsp;<span style="color: #0000FF; ">char</span>)&nbsp;*s);<br /><span style="color: #008080; ">153</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s++;<br /><span style="color: #008080; ">154</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">155</span>&nbsp;}<br /><span style="color: #008080; ">156</span>&nbsp;<br /><span style="color: #008080; ">157</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;strlwr(<span style="color: #0000FF; ">char</span>&nbsp;*s)<br /><span style="color: #008080; ">158</span>&nbsp;{<br /><span style="color: #008080; ">159</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(*s)<br /><span style="color: #008080; ">160</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">161</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*s&nbsp;=&nbsp;tolower((unsigned&nbsp;<span style="color: #0000FF; ">char</span>)&nbsp;*s);<br /><span style="color: #008080; ">162</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s++;<br /><span style="color: #008080; ">163</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">164</span>&nbsp;}<br /><span style="color: #008080; ">165</span>&nbsp;<br /><span style="color: #008080; ">166</span>&nbsp;<span style="color: #0000FF; ">#endif</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;ndef&nbsp;__G_LIN_DEF_H_</span></div><span style="color: red;"><strong><br /></strong></span><div>功能是对一些常用函数改装成Windows相关函数的名字</div></div><img src ="http://www.cppblog.com/xkjy3000/aggbug/207122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xkjy3000/" target="_blank">虚空骄阳</a> 2014-05-27 21:38 <a href="http://www.cppblog.com/xkjy3000/archive/2014/05/27/207122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些常用的小函数</title><link>http://www.cppblog.com/xkjy3000/archive/2014/05/06/206835.html</link><dc:creator>虚空骄阳</dc:creator><author>虚空骄阳</author><pubDate>Tue, 06 May 2014 02:29:00 GMT</pubDate><guid>http://www.cppblog.com/xkjy3000/archive/2014/05/06/206835.html</guid><wfw:comment>http://www.cppblog.com/xkjy3000/comments/206835.html</wfw:comment><comments>http://www.cppblog.com/xkjy3000/archive/2014/05/06/206835.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xkjy3000/comments/commentRss/206835.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xkjy3000/services/trackbacks/206835.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">取当前日期&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">string</span>&nbsp;getCurDate()&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;time_t&nbsp;nowtime;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;time(&amp;nowtime);&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">取当前时间值&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;tm&nbsp;*tPtr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;tPtr&nbsp;=&nbsp;localtime(&amp;nowtime);&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;dateStamp[32];&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::sprintf(dateStamp,&nbsp;"%04d%02d%02d",&nbsp;tPtr-&gt;tm_year+1900&nbsp;,tPtr-&gt;tm_mon+1,tPtr-&gt;tm_mday);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;dateStamp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">取得当前时间&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">string</span>&nbsp;getCurTime()&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;time_t&nbsp;nowtime;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;time(&amp;nowtime);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;tm&nbsp;*tPtr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;tPtr&nbsp;=&nbsp;localtime(&amp;nowtime);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;timeStamp[15];&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(timeStamp,&nbsp;0x00,&nbsp;15);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ACE_OS::sprintf(timeStamp,&nbsp;"%02d%02d%02d",&nbsp;tPtr-&gt;tm_hour,tPtr-&gt;tm_min,tPtr-&gt;tm_sec);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;timeStamp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">int型转string&nbsp;型&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">string</span>&nbsp;intToString(<span style="color: #0000FF; ">int</span>&nbsp;value)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;tmpString[15];&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(tmpString,&nbsp;0x00,&nbsp;15);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sprintf(tmpString,&nbsp;"%d",&nbsp;value);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&nbsp;tmpString;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">将字符串处理为小写。&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">void</span>&nbsp;toLower(<span style="color: #0000FF; ">string</span>&nbsp;&amp;strTmp)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;strTmp.length();&nbsp;i++)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strTmp[i]&nbsp;=&nbsp;tolower(strTmp[i]);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br /><span style="color: #808080; ">///</span><span style="color: #008000; ">根据分隔标记flag将字符串放入。。。。&nbsp;&nbsp;</span><span style="color: #808080; "><br /></span><span style="color: #0000FF; ">int</span>&nbsp;getItem(<span style="color: #0000FF; ">string</span>&nbsp;&amp;msg&nbsp;,&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;flag,&nbsp;vector&lt;<span style="color: #0000FF; ">string</span>&gt;&nbsp;&amp;line)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(line.size()&nbsp;!=&nbsp;0)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.clear();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(msg.length()&nbsp;==&nbsp;0)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*tmpMsg&nbsp;=&nbsp;&amp;msg[0];&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;begin&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;end&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;tmp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;msg.length();&nbsp;i&nbsp;++)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(tmpMsg[i]&nbsp;==&nbsp;flag)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;=&nbsp;i;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span>;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;((end-begin)&gt;&nbsp;0)&nbsp;&nbsp;<br />&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;<span style="color: #0000FF; ">string</span>(&amp;tmpMsg[begin],&nbsp;end-begin);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;"";&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;=&nbsp;end+1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.push_back(tmp);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;((msg.length()-begin)&gt;&nbsp;0)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;&nbsp;=&nbsp;<span style="color: #0000FF; ">string</span>(&amp;tmpMsg[begin],&nbsp;msg.length()-begin);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.push_back(tmp);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">catch</span>(<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_DEBUG((&nbsp;_INFO&nbsp;ACE_TEXT("&nbsp;&nbsp;getItem&nbsp;execpaction:[%s].\n"),&nbsp;msg.c_str()));&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br /><span style="color: #808080; ">///</span><span style="color: #008000; ">/输出vector的内容。&nbsp;&nbsp;</span><span style="color: #808080; "><br /></span><span style="color: #0000FF; ">void</span>&nbsp;dispVector(<span style="color: #0000FF; ">const</span>&nbsp;vector&lt;<span style="color: #0000FF; ">string</span>&gt;&nbsp;&amp;vecTmp)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(vecTmp.size()&nbsp;==&nbsp;0)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_DEBUG((&nbsp;_INFO&nbsp;ACE_TEXT(&nbsp;"&nbsp;vector&nbsp;is&nbsp;null\n"&nbsp;)));&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0&nbsp;;&nbsp;i&nbsp;&lt;&nbsp;vecTmp.size();&nbsp;i++)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACE_DEBUG((&nbsp;_INFO&nbsp;ACE_TEXT(&nbsp;"&nbsp;&nbsp;[%25s]\n"&nbsp;),&nbsp;vecTmp[i].c_str()));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br /><span style="color: #808080; ">///</span><span style="color: #008000; ">/返回num后的字符串&nbsp;&nbsp;</span><span style="color: #808080; "><br /></span><span style="color: #0000FF; ">string</span>&nbsp;lastStr(<span style="color: #0000FF; ">string</span>&nbsp;&amp;from,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;num)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(from.length()&nbsp;&lt;=&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>)num)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;from;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;from.substr(from.length()-num,&nbsp;num);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br />&nbsp;&nbsp;<br /><span style="color: #0000FF; ">string</span>&nbsp;leftFullChar(<span style="color: #0000FF; ">string</span>&nbsp;&amp;from,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;count,&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;flag)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(from.length()&nbsp;&gt;&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>)count)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;from&nbsp;;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;fullCount&nbsp;&nbsp;=&nbsp;(<span style="color: #0000FF; ">int</span>)from.length()&nbsp;-&nbsp;count;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;strTmp(fullCount,&nbsp;flag);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;strTmp&nbsp;+=&nbsp;from;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;strTmp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br />&nbsp;&nbsp;<br /><span style="color: #0000FF; ">string</span>&nbsp;rightFullChar(<span style="color: #0000FF; ">string</span>&nbsp;&amp;from,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;count,&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;flag)&nbsp;&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(from.length()&nbsp;&gt;&nbsp;(unsigned&nbsp;<span style="color: #0000FF; ">int</span>)count)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;from&nbsp;;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;fullCount&nbsp;&nbsp;=&nbsp;(<span style="color: #0000FF; ">int</span>)from.length()&nbsp;-&nbsp;count;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">string</span>&nbsp;strTmp(fullCount,&nbsp;flag);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;from+strTmp;&nbsp;&nbsp;<br />}</div><img src ="http://www.cppblog.com/xkjy3000/aggbug/206835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xkjy3000/" target="_blank">虚空骄阳</a> 2014-05-06 10:29 <a href="http://www.cppblog.com/xkjy3000/archive/2014/05/06/206835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>判断字符串中是否含有汉字</title><link>http://www.cppblog.com/xkjy3000/archive/2013/07/15/201831.html</link><dc:creator>虚空骄阳</dc:creator><author>虚空骄阳</author><pubDate>Mon, 15 Jul 2013 12:37:00 GMT</pubDate><guid>http://www.cppblog.com/xkjy3000/archive/2013/07/15/201831.html</guid><wfw:comment>http://www.cppblog.com/xkjy3000/comments/201831.html</wfw:comment><comments>http://www.cppblog.com/xkjy3000/archive/2013/07/15/201831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xkjy3000/comments/commentRss/201831.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xkjy3000/services/trackbacks/201831.html</trackback:ping><description><![CDATA[<span style="color: #000000">【方法1】</span><br />首先，汉字是双字节的编码格式！&nbsp;&nbsp;<br />汉字的第一字节：是从0xB0&nbsp;&nbsp; 开始编码&nbsp;&nbsp;&nbsp;<br />汉字的第二字节：是从0xA1&nbsp;&nbsp; 开始编码&nbsp;&nbsp;&nbsp;<br />有了以上的了解，就不难识别出是中文，还是其他的编码，程序中只需要判断（&nbsp;&nbsp; 第一字节&gt;=0xB0&nbsp;&nbsp; &amp;&amp;&nbsp;&nbsp; 第二字节&gt;=0xA1&nbsp;&nbsp; ）就好！ 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;IncludeChinese(</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">str)</span><span style="color: #008000">//</span><span style="color: #008000">返回0：无中文，返回1：有中文</span><span style="color: #008000"><br /><img id="Codehighlighter1_47_255_Open_Image" onclick="this.style.display='none'; Codehighlighter1_47_255_Open_Text.style.display='none'; Codehighlighter1_47_255_Closed_Image.style.display='inline'; Codehighlighter1_47_255_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_47_255_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_47_255_Closed_Text.style.display='none'; Codehighlighter1_47_255_Open_Image.style.display='inline'; Codehighlighter1_47_255_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_47_255_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_47_255_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;c;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img id="Codehighlighter1_75_240_Open_Image" onclick="this.style.display='none'; Codehighlighter1_75_240_Open_Text.style.display='none'; Codehighlighter1_75_240_Closed_Image.style.display='inline'; Codehighlighter1_75_240_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_75_240_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_75_240_Closed_Text.style.display='none'; Codehighlighter1_75_240_Open_Image.style.display='inline'; Codehighlighter1_75_240_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_75_240_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_75_240_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c</span><span style="color: #000000">=*</span><span style="color: #000000">str</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(c</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果到字符串尾则说明该字符串没有中文字符</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(c</span><span style="color: #000000">&amp;</span><span style="color: #000000">0x80</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果字符高位为1且下一字符高位也是1则有中文字符</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">str&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0x80</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div><br />【方法2】<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()&nbsp;<br /><img id="Codehighlighter1_12_362_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_362_Open_Text.style.display='none'; Codehighlighter1_12_362_Closed_Image.style.display='inline'; Codehighlighter1_12_362_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_12_362_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_12_362_Closed_Text.style.display='none'; Codehighlighter1_12_362_Open_Image.style.display='inline'; Codehighlighter1_12_362_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_12_362_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_12_362_Open_Text"><span style="color: #000000">{&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;sztext[]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;是ciw.</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;<br /><img id="Codehighlighter1_75_77_Open_Image" onclick="this.style.display='none'; Codehighlighter1_75_77_Open_Text.style.display='none'; Codehighlighter1_75_77_Closed_Image.style.display='inline'; Codehighlighter1_75_77_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_75_77_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_75_77_Closed_Text.style.display='none'; Codehighlighter1_75_77_Open_Image.style.display='inline'; Codehighlighter1_75_77_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;szchinese[</span><span style="color: #000000">3</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_75_77_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_75_77_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">0</span><span style="color: #000000">}</span></span><span style="color: #000000">;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;nlen&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;strlen(sztext);&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">for</span><span style="color: #000000">(;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;nlen;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;<br /><img id="Codehighlighter1_139_348_Open_Image" onclick="this.style.display='none'; Codehighlighter1_139_348_Open_Text.style.display='none'; Codehighlighter1_139_348_Closed_Image.style.display='inline'; Codehighlighter1_139_348_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_139_348_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_139_348_Closed_Text.style.display='none'; Codehighlighter1_139_348_Open_Image.style.display='inline'; Codehighlighter1_139_348_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_139_348_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_139_348_Open_Text"><span style="color: #000000">{&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;sztext[i]&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;sztext[i]&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">127</span><span style="color: #000000">&nbsp;)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">不是全角字符？</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sztext[i],&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%c\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;c);&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">是全角字符</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">szchinese[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sztext[i],&nbsp;szchinese[</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sztext[i&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">],&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;szchinese),&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">中文是2个字节,所以i++</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><img src ="http://www.cppblog.com/xkjy3000/aggbug/201831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xkjy3000/" target="_blank">虚空骄阳</a> 2013-07-15 20:37 <a href="http://www.cppblog.com/xkjy3000/archive/2013/07/15/201831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 取汉字拼音首字母</title><link>http://www.cppblog.com/xkjy3000/archive/2013/07/13/201769.html</link><dc:creator>虚空骄阳</dc:creator><author>虚空骄阳</author><pubDate>Sat, 13 Jul 2013 07:34:00 GMT</pubDate><guid>http://www.cppblog.com/xkjy3000/archive/2013/07/13/201769.html</guid><wfw:comment>http://www.cppblog.com/xkjy3000/comments/201769.html</wfw:comment><comments>http://www.cppblog.com/xkjy3000/archive/2013/07/13/201769.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xkjy3000/comments/commentRss/201769.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xkjy3000/services/trackbacks/201769.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;#include&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;&nbsp;std;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;&nbsp;convert(wchar_t&nbsp;&nbsp;n);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;&nbsp;In(wchar_t&nbsp;&nbsp;start,&nbsp;&nbsp;wchar_t&nbsp;&nbsp;end,&nbsp;&nbsp;wchar_t&nbsp;&nbsp;code);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;argc,&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;&nbsp;argv[])<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img id="Codehighlighter1_218_834_Open_Image" onclick="this.style.display='none'; Codehighlighter1_218_834_Open_Text.style.display='none'; Codehighlighter1_218_834_Closed_Image.style.display='inline'; Codehighlighter1_218_834_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_218_834_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_218_834_Closed_Text.style.display='none'; Codehighlighter1_218_834_Open_Image.style.display='inline'; Codehighlighter1_218_834_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_218_834_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_218_834_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;&nbsp;sChinese&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">我爱中国</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;输入的字符串</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;&nbsp;chr[</span><span style="color: #000000">3</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;wchar_t&nbsp;&nbsp;wchr&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;&nbsp;buff&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[sChinese.length()</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;memset(buff,&nbsp;&nbsp;</span><span style="color: #000000">0x00</span><span style="color: #000000">,&nbsp;&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(</span><span style="color: #0000ff">char</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">sChinese.length()</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;i&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;&nbsp;j&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;i&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;&nbsp;(sChinese.length()</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">);&nbsp;&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img id="Codehighlighter1_489_755_Open_Image" onclick="this.style.display='none'; Codehighlighter1_489_755_Open_Text.style.display='none'; Codehighlighter1_489_755_Closed_Image.style.display='inline'; Codehighlighter1_489_755_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_489_755_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_489_755_Closed_Text.style.display='none'; Codehighlighter1_489_755_Open_Image.style.display='inline'; Codehighlighter1_489_755_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_489_755_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_489_755_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;memset(chr,&nbsp;&nbsp;</span><span style="color: #000000">0x00</span><span style="color: #000000">,&nbsp;&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(chr));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;chr[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;sChinese[j</span><span style="color: #000000">++</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;chr[</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;sChinese[j</span><span style="color: #000000">++</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;chr[</span><span style="color: #000000">2</span><span style="color: #000000">]&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\0</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;单个字符的编码&nbsp;&nbsp;如：'我'&nbsp;&nbsp;=&nbsp;&nbsp;0xced2</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;wchr&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;wchr&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;(chr[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0xff</span><span style="color: #000000">)&nbsp;&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">8</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;wchr&nbsp;&nbsp;</span><span style="color: #000000">|=</span><span style="color: #000000">&nbsp;&nbsp;(chr[</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0xff</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;buff&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;convert(wchr);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;cout&nbsp;&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">pin&nbsp;&nbsp;yin&nbsp;&nbsp;=&nbsp;&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;&nbsp;buff&nbsp;&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">]</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;&nbsp;endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;&nbsp;convert(wchar_t&nbsp;&nbsp;n)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img id="Codehighlighter1_868_1880_Open_Image" onclick="this.style.display='none'; Codehighlighter1_868_1880_Open_Text.style.display='none'; Codehighlighter1_868_1880_Closed_Image.style.display='inline'; Codehighlighter1_868_1880_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_868_1880_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_868_1880_Closed_Text.style.display='none'; Codehighlighter1_868_1880_Open_Image.style.display='inline'; Codehighlighter1_868_1880_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_868_1880_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_868_1880_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xB0A1</span><span style="color: #000000">,</span><span style="color: #000000">0xB0C4</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">a</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0XB0C5</span><span style="color: #000000">,</span><span style="color: #000000">0XB2C0</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">b</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xB2C1</span><span style="color: #000000">,</span><span style="color: #000000">0xB4ED</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">c</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xB4EE</span><span style="color: #000000">,</span><span style="color: #000000">0xB6E9</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">d</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xB6EA</span><span style="color: #000000">,</span><span style="color: #000000">0xB7A1</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">e</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xB7A2</span><span style="color: #000000">,</span><span style="color: #000000">0xB8c0</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">f</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xB8C1</span><span style="color: #000000">,</span><span style="color: #000000">0xB9FD</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">g</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xB9FE</span><span style="color: #000000">,</span><span style="color: #000000">0xBBF6</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">h</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xBBF7</span><span style="color: #000000">,</span><span style="color: #000000">0xBFA5</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">j</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xBFA6</span><span style="color: #000000">,</span><span style="color: #000000">0xC0AB</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">k</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC0AC</span><span style="color: #000000">,</span><span style="color: #000000">0xC2E7</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">l</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC2E8</span><span style="color: #000000">,</span><span style="color: #000000">0xC4C2</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">m</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC4C3</span><span style="color: #000000">,</span><span style="color: #000000">0xC5B5</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">n</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC5B6</span><span style="color: #000000">,</span><span style="color: #000000">0xC5BD</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">o</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC5BE</span><span style="color: #000000">,</span><span style="color: #000000">0xC6D9</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">p</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC6DA</span><span style="color: #000000">,</span><span style="color: #000000">0xC8BA</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">q</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC8BB</span><span style="color: #000000">,</span><span style="color: #000000">0xC8F5</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">r</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xC8F6</span><span style="color: #000000">,</span><span style="color: #000000">0xCBF0</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">s</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xCBFA</span><span style="color: #000000">,</span><span style="color: #000000">0xCDD9</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">t</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xCDDA</span><span style="color: #000000">,</span><span style="color: #000000">0xCEF3</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">w</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xCEF4</span><span style="color: #000000">,</span><span style="color: #000000">0xD188</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">x</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xD1B9</span><span style="color: #000000">,</span><span style="color: #000000">0xD4D0</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">y</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(In(</span><span style="color: #000000">0xD4D1</span><span style="color: #000000">,</span><span style="color: #000000">0xD7F9</span><span style="color: #000000">,n))&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">z</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\0</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;&nbsp;In(wchar_t&nbsp;&nbsp;start,&nbsp;&nbsp;wchar_t&nbsp;&nbsp;end,&nbsp;&nbsp;wchar_t&nbsp;&nbsp;code)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img id="Codehighlighter1_1944_2038_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1944_2038_Open_Text.style.display='none'; Codehighlighter1_1944_2038_Closed_Image.style.display='inline'; Codehighlighter1_1944_2038_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_1944_2038_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1944_2038_Closed_Text.style.display='none'; Codehighlighter1_1944_2038_Open_Image.style.display='inline'; Codehighlighter1_1944_2038_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1944_2038_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1944_2038_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;(code&nbsp;&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;&nbsp;start&nbsp;&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;&nbsp;code&nbsp;&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;&nbsp;end)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img id="Codehighlighter1_1993_2015_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1993_2015_Open_Text.style.display='none'; Codehighlighter1_1993_2015_Closed_Image.style.display='inline'; Codehighlighter1_1993_2015_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1993_2015_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1993_2015_Closed_Text.style.display='none'; Codehighlighter1_1993_2015_Open_Image.style.display='inline'; Codehighlighter1_1993_2015_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1993_2015_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1993_2015_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span></div><img src ="http://www.cppblog.com/xkjy3000/aggbug/201769.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xkjy3000/" target="_blank">虚空骄阳</a> 2013-07-13 15:34 <a href="http://www.cppblog.com/xkjy3000/archive/2013/07/13/201769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>