﻿<?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++博客-jkgame</title><link>http://www.cppblog.com/jkgame/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 23:17:08 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 23:17:08 GMT</pubDate><ttl>60</ttl><item><title>char* To wchar_t*</title><link>http://www.cppblog.com/jkgame/archive/2009/05/21/83535.html</link><dc:creator>JK</dc:creator><author>JK</author><pubDate>Wed, 20 May 2009 23:23:00 GMT</pubDate><guid>http://www.cppblog.com/jkgame/archive/2009/05/21/83535.html</guid><wfw:comment>http://www.cppblog.com/jkgame/comments/83535.html</wfw:comment><comments>http://www.cppblog.com/jkgame/archive/2009/05/21/83535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jkgame/comments/commentRss/83535.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jkgame/services/trackbacks/83535.html</trackback:ping><description><![CDATA[<p>一.</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #000000">LPWSTR&nbsp;ConvertLPCSTRToLPWSTR&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pCstring)&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000">LPWSTR&nbsp;pszOut&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(pCstring&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL)&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nInputStrLen&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;strlen&nbsp;(pCstring);&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Double&nbsp;NULL&nbsp;Termination&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #008000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nOutputStrLen&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MultiByteToWideChar(CP_ACP,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;pCstring,&nbsp;nInputStrLen,&nbsp;NULL,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">pszOut&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;WCHAR&nbsp;[nOutputStrLen];&nbsp;<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(pszOut)&nbsp;<br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #000000">memset&nbsp;(pszOut,&nbsp;</span><span style="COLOR: #000000">0x00</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;(WCHAR)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">nOutputStrLen);&nbsp;<br></span><span style="COLOR: #008080">13</span>&nbsp;<span style="COLOR: #000000">MultiByteToWideChar&nbsp;(CP_ACP,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;pCstring,&nbsp;nInputStrLen,&nbsp;pszOut,&nbsp;nInputStrLen);&nbsp;<br></span><span style="COLOR: #008080">14</span>&nbsp;<span style="COLOR: #000000">}&nbsp;<br></span><span style="COLOR: #008080">15</span>&nbsp;<span style="COLOR: #000000">}&nbsp;<br></span><span style="COLOR: #008080">16</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pszOut;&nbsp;<br></span><span style="COLOR: #008080">17</span>&nbsp;<span style="COLOR: #000000">}&nbsp;<br></span><span style="COLOR: #008080">18</span>&nbsp;<span style="COLOR: #000000"></span></div>
<p><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">After using this method do remember to delete the allocated string.</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"></span><wbr><br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">eg:</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"></span><wbr><br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">char * str = new char[strlen("ASHOK") + 1];</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">strcpy(str, "ASHOK");</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">WCHAR * pwStr = ConvertLPCSTRToLPWSTR(str);</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">//Use this pwStr</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">......</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">.....</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">//delete the wide char pointer.</span><wbr></span><wbr></span><wbr> <br><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">delete []pwStr;</span><wbr></span><wbr></span><wbr> <br><br>二.<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;xmalloc(s)&nbsp;HeapAlloc(GetProcessHeap(),&nbsp;HEAP_ZERO_MEMORY,&nbsp;(s))</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;xfree(p)&nbsp;&nbsp;&nbsp;HeapFree&nbsp;(GetProcessHeap(),&nbsp;0,&nbsp;(p))</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000">wchar_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">str2wstrptr(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pStr)<br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PSTR&nbsp;pMultiByteStr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(PSTR)pStr;<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PWSTR&nbsp;pWideCharStr;<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nLenOfWideCharStr;<br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;利用API函数MultiByteToWideChar()来把a转化成unicode字符</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;nLenOfWideCharStr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MultiByteToWideChar(&nbsp;CP_ACP,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;pMultiByteStr,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;NULL,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">13</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;pWideCharStr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(PWSTR)xmalloc(nLenOfWideCharStr&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(WCHAR));<br></span><span style="COLOR: #008080">14</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;MultiByteToWideChar(&nbsp;CP_ACP,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;pMultiByteStr,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;pWideCharStr,&nbsp;nLenOfWideCharStr&nbsp;);<br></span><span style="COLOR: #008080">15</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pWideCharStr;<br></span><span style="COLOR: #008080">16</span>&nbsp;<span style="COLOR: #000000">}<br></span><span style="COLOR: #008080">17</span>&nbsp;<span style="COLOR: #000000"></span></div>
<p><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 1.8em">eg:</span><wbr></span><wbr></span><wbr> <br>wchar_t* ptitle= str2wstrptr("字符串转化");<br><br>xfree(ptitle);<br><br><br><br><br><br><!--v:3.2--><br></p>
<img src ="http://www.cppblog.com/jkgame/aggbug/83535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jkgame/" target="_blank">JK</a> 2009-05-21 07:23 <a href="http://www.cppblog.com/jkgame/archive/2009/05/21/83535.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>