CString 操作指南

论坛 期权论坛     
匿名技术用户   2021-1-15 13:27   744   0
这篇文章包括以下内容:
<ol><li> <p align="left"><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%20%E5%AF%B9%E8%B1%A1%E7%9A%84%E8%BF%9E%E6%8E%A5">CString 对象的连接</a> </p> </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%AD%97%E7%AC%A6%E4%B8%B2">格式化字符串(包括 int 型转化为 CString )</a> </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%20%E5%9E%8B%E8%BD%AC%E5%8C%96%E6%88%90%20int%20%E5%9E%8B">CString 型转化成 int 型</a> </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%20%E5%9E%8B%E5%92%8C%20char*%20%E7%B1%BB%E5%9E%8B%E7%9A%84%E7%9B%B8%E4%BA%92%E8%BD%AC%E5%8C%96">CString 型和 char* 类型的相互转化</a><br>
  <dir>
   <li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#char*%20%E8%BD%AC%E5%8C%96%E4%B8%BA%20CString">char* 转化成 CString</a> </li>
   <li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%E8%BD%AC%E5%8C%96%E6%88%90char*%20%E4%B9%8B%E4%B8%80">CString 转化成 char* 之一:使用LPCTSTR强制转化</a> </li>
   <li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%E8%BD%AC%E5%8C%96%E6%88%90char*%20%E4%B9%8B%E4%BA%8C">CString 转化成 char* 之二:使用CString对象的GetBuffer方法</a> </li>
   <li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%20to%20char%20*%20%E4%B9%8B%E4%B8%89">CString 转化成 char* 之三: 和控件的接口</a> </li>
  </dir></li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%20%E5%9E%8B%E8%BD%AC%E5%8C%96%E6%88%90%20BSTR%20%E5%9E%8B">CString 型转化成 BSTR 型</a>; </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#BSTR%20%E5%9E%8B%E8%BD%AC%E5%8C%96%E6%88%90%20CString%20%E5%9E%8B">BSTR 型转化成 CString 型</a>; </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#VARIANT%20%E5%9E%8B%E8%BD%AC%E5%8C%96%E6%88%90%20CString%20%E5%9E%8B">VARIANT 型转化成 CString 型</a>; </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#%E8%BD%BD%E5%85%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A1%A8%E8%B5%84%E6%BA%90">载入字符串表资源</a>; </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%20%E5%92%8C%E4%B8%B4%E6%97%B6%E5%AF%B9%E8%B1%A1">CString 和临时对象</a>; </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#CString%E7%9A%84%E6%95%88%E7%8E%87">CString 的效率</a>; </li><li><a href="http://blog.csdn.net/pinping1314/archive/2005/04/21/357260.aspx#%E6%80%BB%E7%BB%93">总结</a> </li></ol>
<p>下面我分别讨论。<br><br><img alt="" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-df67d7475c6999363bcf641a04b49c43.gif"> 1、<strong><a name="CString %E5%AF%B9%E8%B1%A1%E7%9A%84%E8%BF%9E%E6%8E%A5">CString 对象的连接</a></strong><br><br>  能体现出 CString 类型方便性特点的一个方面就字符串的连接,使用 CString 类型,你能很方便地连接两个字符串,正如下面的例子:</p>
<pre class="blockcode">CString gray(&#34;Gray&#34;);CString cat(&#34;Cat&#34;);CString graycat &#61; gray &#43; cat;</pre>
<p>要比用下面的方法好得多:</p>
<p>char gray[] &#61; &#34;Gray&#34;;</p>
<p>char cat[] &#61; &#34;Cat&#34;;</p>
<p>char * graycat &#61; malloc(strlen(gray) &#43; strlen(cat) &#43; 1);</p>
<p>strcpy(graycat, gray);strcat(graycat, cat);</p>
<p><img alt="" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-df67d7475c6999363bcf641a04b49c43.gif"> 2、<strong><a name="%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%AD%97%E7%AC%A6%E4%B8%B2">格式化字符串</a></strong><br><br>  与其用 sprintf() 函数或 wsprintf() 函数来格式化一个字符串,还不如用 CString 对象的Format()方法:</p>
<pre class="blockcode">CString s;s.Format(_T(&#34;The total is %d&#34;), total);</pre>
<p>  用这种方法的好处是你不用担心用来存放格式化后数据的缓冲区是否足够大,这些工作由CString类替你完成。<br>  格式化是一种把其它不是字符串类型的数据转化为CString类型的最常用技巧,比如,把一个整数转化成CString类型,可用如下方法:</p>
<pre class="blockcode">CString s;s.Format(_T(&#34;%d&#34;), total);</pre>
<p>  我总是对我的字符串使用_T()宏,这是为了让我的代码至少有Unicode的意识,当然,关于Unicode的话题不在这篇文章的讨论范围。_T()宏在8位字符环境下是如下定义的:</p>
<pre class="blockcode">#define _T(x) x // 非Unicode版本(non-Unicode version)</pre>
<p>而在Unicode环境下是如下定义的:</p>
<pre class="blockcode">#define _T(x) L##x // Unicode版本(Unicode version)</pre>
<p>所以在Unicode环境下,它的效果就相当于:</p>
<pre class="blockcode">s.Format(L&#34;%d&#34;, total);</pre>
<p>  如果你认为你的程序可能在Unicode的环境下运行,那么开始在意用 Unicode 编码。比如说,不要用 sizeof() 操作符来获得字符串的长度&#xff0
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP