﻿<?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>语源科技BlogJava-我爱我的家园!</title><link>http://www.blogjava.net/Yipak/</link><description>成功在于你是否努力,希望在于你是否相信自己! </description><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 04:35:28 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 04:35:28 GMT</pubDate><ttl>60</ttl><item><title>配置vim 7.1来使用vimcdoc的中文帮助</title><link>http://www.blogjava.net/Yipak/articles/323514.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Sun, 13 Jun 2010 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/323514.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/323514.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/323514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/323514.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/323514.html</trackback:ping><description><![CDATA[<p> <h4></h4> <h5></h5> <h3></h3> <h4>1.乱码</h4> <h4>由于vimcdoc的文件都是UTF-8格式的,所以直接用gvim打开后会出现乱码.解决:在.vimrc文件中加上一句"set encoding=utf-8" </h4> <h4>2.如果操作系统是2000/xp中文版,gvim的初始界面以及菜单栏都是中文.如果按照1中的方法设置uft-8的话,这些内容就变成乱码了.解决:把vim文件夹下面的lang文件夹删除.这样gvim启动的时候就默认是英语了,菜单栏和界面提示也都是英文了. </h4> <h4>3.用gvim打开vimfiles文件夹下面的中文帮助help.cnx文件后点击链接不能跳转.</h4> <h4>这是由于tags文件有问题.解决:用vimfiles/doc文件夹覆盖vim71/doc,<font color="#ff0000">具体步骤：1）删除或移走vim71下的doc目录，2）将vimfiles下的doc目录拷贝进vim71下，3）用批量重命名工具将doc下的所有cnx后缀的文件改成txt后缀</font>.（当然,如果你想保存一样英文帮助的话可以先打包.）这样的好处是可以跳转了,而且直接启动gvim后按F1就可以启动中文帮助了^^ </h4> <h4>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/happen23/archive/2008/04/24/2324916.aspx</h4> <img src ="http://www.blogjava.net/Yipak/aggbug/323514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2010-06-13 14:47 <a href="http://www.blogjava.net/Yipak/articles/323514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python是垃圾？</title><link>http://www.blogjava.net/Yipak/articles/230183.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Sat, 20 Sep 2008 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/230183.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/230183.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/230183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/230183.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/230183.html</trackback:ping><description><![CDATA[
		<span style="FONT-WEIGHT: bold">python和basic差不多应该是容易学，但是功能弱的语言</span>
		<br />
		<br />basic是好多人的年幼时的回忆了，gvbasic，gwbasic，qbaisc，各种版本把很多人带入了快乐的世界里面。但是很多人都会用了一段时间basic之后就把它废置了，因为觉得除了能够用来play，功能太少。即便是vb，也是功能不甚完善的，很多地方要依靠其他语言写的组件和直接调用 api来完成功能。<br />而python由于粗看之下，也是那么的像玩具。而且那个交互式命令行给人带来的教学语言的感觉更加加强了人们的想法。<br />但是python其实功能不能说是弱，其实是非常强大。python内置了重要的数据结构和文件这些功能，而且包含了一个很大的标准库，基本上涵盖了从 GUI到数据库到网络种种功能上的要求。而且还有很多爱好者，公司企业为python写第三方的库，这些库品种繁多，功能齐全。而且还能把其他语言的库加以包装给自己使用，直接用c这样的语言了来写扩展的库也是可以的。所以说，python像basic一样好学，但是功能却要强大很多。<br /><br />第二个常见看法是：<br /><br /><span style="FONT-WEIGHT: bold">python速度很慢，只能用在很少的应用场合</span><br /><br />对于习惯了汇编和C++这样的语言的人，思维总是有一个惯性（包括我自己也经历了这么一个阶段）。就是看文件大小是数字节的，任何运行时的 overhead都是绝对不可以的。那么一看见python这样的动态语言，而且动态得非常厉害的语言，怎么看怎么不顺眼也是情理之中了。<br />关键的问题首先是你是否需要省那么个100~200k的大小，现在的内存，硬盘，网络通信环境已经不大在乎这么一点的空间了，所以大小不是问题。关键的是运行时间吗？其实在很多场合下是不需要那么快的速度的，比如开一个窗口，运行如果延时100ms，你感觉得到吗？<br />python还能够把py文件进行一些处理变成pyc文件，加速源文件的解释执行。像java的虚拟机中的just in time或者hot spot这样的预先读取，预先编译的技术都能构同等的用于python。<br />python还有一个非常大的好处就是能够用C这样的快速的语言写扩展模块。在软件中一般都是20%的代码占据了80%的运行时间。这样你可以先用 benchmark这样的工具看看软件是否慢得无法忍受了，然后再用profiler查出问题瓶颈在哪里，那么就可以把关键的代码用C解决掉。这样可以节省了开发时间（大部分代码用python写，比C快），而且运行速度也可以令人满意。<br />所以说，对于python的速度是不用多担心的。但是为了客观起见，python的却是慢的，在python中什么都是对象，这个比java这样的不那么纯的OO语言，就要差一些了。<br /><br />第三个常见问题是：<br /><br /><span style="FONT-WEIGHT: bold">由于python是动态的，程序更加容易出错了</span><br /><br />有这个看法主要是认为，因为python是动态的，所以缺乏静态的类型检查，那么程序中的错误就很难发现了。设置可能说没有执行到的块的语法都没有得到完全彻底的检查。变量由于没有声明，所以容易产生误写的错误。事情真这么糟糕吗？<br /><br />第一个缺乏类型检查是说一个函数有几个参数，但是由于参数的类型是动态确定的，所以没有办法在静态的时候就检查传入的参数和参数表是否匹配了。问题是你写的函数一定要自己测试了，而且一旦出了问题，你是非常容易找到出错的地方的。dynamic typing是那么灵活好用，多这么一点麻烦也是值得的。<br /><br />第二个看法就是错误的。在python中所有语法都得到了检查的。即使是处在分支语句中。只是有可能你说的是这样的情况：<br />a = 1;<br />明明加了分号，怎么不说我错了呢？其实分号是可以用的，用来格开在一行中的不同语句。<br />还有可能是这样的：<br />if a == 0:<br />  fsdfsdafsad<br />这个怪东西应该是一个语法错误吧。其实是未必。因为程序运行到这个的时候可能这个名字就绑定到了什么东西上了，未必就是错误。它是符合语句的语法的。<br /><br />第三个则不是那么回事了。在basic中，你引用一个没有出现过的变量名。那么这个变量自动被分配，而且得到初始化。这个就会出问题了。而python中，你不能引用一个没有绑定到对象上的名字，而<br />name = 0<br />这样的语句就是一个声明了。没有什么问题。<br />name = 0<br />nama = 1<br />这个总是问题了吧。对于变量名的误拼写出现在赋值的情况的时候就会被通过，因为认为是产生一个新的名称绑定。那么这个也好找出来啊，必然是出现在赋值的情况下，比basic中的那种情况好多了<br /><br />总体来说是，dynamic的东西缺少一些静态的检查的却是会使得错误隐蔽一些。但是由于动态带来的调试上的方便（比如能够一眼从出错信息中找到出错的行，以及调用流程）足以把副作用给抵消了。<br /><br />希望通过我的一点解释，能够让你消去疑惑，喜欢上python。 <img src ="http://www.blogjava.net/Yipak/aggbug/230183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-20 21:55 <a href="http://www.blogjava.net/Yipak/articles/230183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ansi、Unicode、UTF8字符串之间的转换和写入文本文件</title><link>http://www.blogjava.net/Yipak/articles/229223.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Tue, 16 Sep 2008 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/229223.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/229223.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/229223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/229223.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/229223.html</trackback:ping><description><![CDATA[
		<p>转载请注明出处<a href="http://www.cppblog.com/greatws/archive/2008/08/31/60546.html">http://www.cppblog.com/greatws/archive/2008/08/31/60546.html</a><br /><br />最近有人问我关于这个的问题，就此写一篇blog<br /><br />Ansi字符串我们最熟悉，英文占一个字节，汉字2个字节，以一个\0结尾，常用于txt文本文件<br />Unicode字符串，每个字符(汉字、英文字母)都占2个字节，以2个连续的\0结尾，NT操作系统内核用的是这种字符串，常被定义为typedef unsigned short wchar_t;所以我们有时常会见到什么char*无法转换为unsigned short*之类的错误，其实就是unicode<br />UTF8是Unicode一种压缩形式，英文A在unicode中表示为0x0041，老外觉得这种存储方式太浪费，因为浪费了50%的空间，于是就把英文压缩成1个字节，成了utf8编码，但是汉字在utf8中占3个字节，显然用做中文不如ansi合算，这就是中国的网页用作ansi编码而老外的网页常用utf8的原因。<br />UTF8在还游戏里运用的很广泛，比如WOW的lua脚本等<br /><br />下面来说一下转换，主要用代码来说明吧<br />写文件我用了CFile类，其实用FILE*之类的也是一样，写文件和字符串什么类别没有关系，硬件只关心数据和长度<br /><br />Ansi转Unicode<br />介绍2种方法<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">
				<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonAnsiToUnicode()<br /><img id="Codehighlighter1_51_1122_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1122_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_51_1122_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_51_1122_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> ansi to unicode</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> szAnsi </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">abcd1234你我他</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">预转换，得到所需空间的大小</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> wcsLen </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wchar_t</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> wszString </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> wchar_t[wcsLen </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">转换</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">最后加上'\0'</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wszString[wcsLen] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">\0</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">unicode版的MessageBox API</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">接下来写入文本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写文本文件，头2个字节0xfeff，低位0xff写在前</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">1.txt</span>
						<span style="COLOR: #000000">")</span>
						<span style="COLOR: #000000">, CFile::modeWrite </span>
						<span style="COLOR: #000000">|</span>
						<span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">文件开头</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Write(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\xff\xfe</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">2</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写入内容</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.Write(wszString, wcsLen </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">sizeof</span>
						<span style="COLOR: #000000">(wchar_t));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] wszString;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wszString </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">方法2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">设置当前地域信息，不设置的话，使用这种方法，中文不会正确显示<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">需要#include&lt;locale.h&gt;</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    setlocale(LC_CTYPE, </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">chs</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wchar_t wcsStr[</span>
						<span style="COLOR: #000000">100</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">注意下面是大写S，在unicode中，代表后面是ansi字符串<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">swprintf是sprintf的unicode版本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">格式的前面要加大写L，代表是unicode</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    swprintf(wcsStr, L</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">%S</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, szAnsi);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxW(GetSafeHwnd(), wcsStr, wcsStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>
				<br />
				<br />Unicode转Ansi<br />也是2种方法<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">
				<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToAnsi()<br /><img id="Codehighlighter1_51_1013_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1013_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_51_1013_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_51_1013_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> unicode to ansi</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wchar_t</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> wszString </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> L</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">abcd1234你我他</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">预转换，得到所需空间的大小，这次用的函数和上面名字相反</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> ansiLen </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">同上，分配空间要给'\0'留个空间</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> szAnsi </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">[ansiLen </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">unicode版对应的strlen是wcslen</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">最后加上'\0'</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    szAnsi[ansiLen] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">\0</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">Ansi版的MessageBox API</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::MessageBoxA(GetSafeHwnd(), szAnsi, szAnsi, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">接下来写入文本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写文本文件，ANSI文件没有BOM</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">1.txt</span>
						<span style="COLOR: #000000">")</span>
						<span style="COLOR: #000000">, CFile::modeWrite </span>
						<span style="COLOR: #000000">|</span>
						<span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">文件开头</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写入内容</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.Write(szAnsi, ansiLen </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">sizeof</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szAnsi;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szAnsi </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">方法2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">和上面一样有另一种方法</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    setlocale(LC_CTYPE, </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">chs</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000"> szStr[</span>
						<span style="COLOR: #000000">100</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">注意下面是大写，在ansi中，代表后面是unicode字符串<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">sprintf</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    sprintf(szStr, </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">%S</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, wszString);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxA(GetSafeHwnd(), szStr, szStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>
				<br />
				<br />Unicode转UTF8<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">
				<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToU8()<br /><img id="Codehighlighter1_49_850_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_850_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_49_850_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_49_850_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> unicode to UTF8</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wchar_t</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> wszString </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> L</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">abcd1234你我他</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">预转换，得到所需空间的大小，这次用的函数和上面名字相反</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> u8Len </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">同上，分配空间要给'\0'留个空间<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> szU8 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">[u8Len </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">unicode版对应的strlen是wcslen</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">最后加上'\0'</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    szU8[u8Len] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">\0</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">MessageBox不支持UTF8,所以只能写文件<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">接下来写入文本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写文本文件，UTF8的BOM是0xbfbbef</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">1.txt</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">), CFile::modeWrite </span>
						<span style="COLOR: #000000">|</span>
						<span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">文件开头</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写BOM，同样低位写在前</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.Write(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\xef\xbb\xbf</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">3</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写入内容</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.Write(szU8, u8Len </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">sizeof</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szU8;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szU8 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>
				<br />UTF8转UNICODE<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">
				<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonU8ToUnicode()<br /><img id="Codehighlighter1_49_613_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_613_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_49_613_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_49_613_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">UTF8 to Unicode<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">由于中文直接复制过来会成乱码，编译器有时会报错，故采用16进制形式</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> szU8 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">预转换，得到所需空间的大小</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> wcsLen </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wchar_t</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> wszString </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> wchar_t[wcsLen </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">转换</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">最后加上'\0'</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wszString[wcsLen] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">\0</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">unicode版的MessageBox API</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写文本同ansi to unicode</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />
						</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>
				<br />
				<br />Ansi转换utf8和utf8转换Ansi就是上面2个的结合，把unicode作为中间量，进行2次转换即可<br /><br />by greatws </p>
<img src ="http://www.blogjava.net/Yipak/aggbug/229223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-16 17:59 <a href="http://www.blogjava.net/Yipak/articles/229223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在C语言中怎样获得汉字编码?</title><link>http://www.blogjava.net/Yipak/articles/229069.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Mon, 15 Sep 2008 17:11:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/229069.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/229069.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/229069.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/229069.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/229069.html</trackback:ping><description><![CDATA[C语言中，我们用整数输出字符得到的就是该字符的ASII码，如用整数输出a，得到97 <br /><br />但是，要是用字符数组存的汉字，怎样获得他的编码？汉字用的是两个字节存储，是不是这两个字节都有ASII码？那该怎么获得他们？然后把他们统一成一个编码？<br /><br /><br />汉字编码分好几种，不知道你想问的是哪种？ <br /><br />C/C++支持的是ASCII，不过汉字编码中，GB2312与ASCII是兼容的，所以可以在C中获得汉字的GB2312编码 <br /><br />GB2312是两个字节的，第一字节是高八位，第二字节是低八位，比如下面的程序： <br /><br />#include&lt;stdio.h&gt; <br />#include&lt;string.h&gt; <br />int main() <br />{ <br />char a[5]; <br />strcpy(a,"啊"); <br />printf("%XH %XH\n",(unsigned char)a[0],(unsigned char)a[1]); <br />return 0; <br />} <br /><br />a[0]是“啊”字的高八位，a[1]是低八位，程序运行结果是a[0]=B0 a[1]=A1，用16进制表示的，所以“啊”字的GB2312编码是B0A1了~ <br /><br />输出时要强制转换成unsigned char，不然就变成负数了，因为编码是以8位的无符号整数为单位的 <br /><br />当然也可以转成10进制啦，比如 <br /><br />int b; <br />b=(unsigned char)a[0]*256+(unsigned char)a[1]; <br /><br />b即为汉字的10进制GB2312编码了<br /><br /><img src ="http://www.blogjava.net/Yipak/aggbug/229069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-16 01:11 <a href="http://www.blogjava.net/Yipak/articles/229069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#深入详解[4.1  数据类型]</title><link>http://www.blogjava.net/Yipak/articles/227335.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Fri, 05 Sep 2008 14:26:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/227335.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/227335.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/227335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/227335.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/227335.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 4.1  数据类型		4.1.1  C#的数据类型		C#是强类型语言，因此每个变量和对象都必须具有声明类型。C#开发语言的数据类型包括值类型和引用类型。		4.1.2  C#值类型		C#开发语言的值类型有15种，包括bool、byte、char、decimal、double、enum、float、int、long、sbyte、short、struct、uint、ulong和us...&nbsp;&nbsp;<a href='http://www.blogjava.net/Yipak/articles/227335.html'>阅读全文</a><img src ="http://www.blogjava.net/Yipak/aggbug/227335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-05 22:26 <a href="http://www.blogjava.net/Yipak/articles/227335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++常量的表示</title><link>http://www.blogjava.net/Yipak/articles/227334.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Fri, 05 Sep 2008 14:24:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/227334.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/227334.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/227334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/227334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/227334.html</trackback:ping><description><![CDATA[
		<font face="宋体" size="4"> C++常量的表示</font>
		<div>
				<br />
				<font face="宋体" size="4"> </font>
		</div>
		<div>
				<font face="宋体" size="4">    一、char型常量</font>
		</div>
		<div>
				<font face="宋体" size="4">
						<br />    (一)单个字符:用单引号定界，如'a'，C++转义字符如下：<br />        (01)\n        换行<br />        (02)\r        回车<br />        (03)\t        水平制表符<br />        (04)\v        垂直制表符<br />        (05)\b        退格<br />        (06)\a        振铃<br />        (07)\\        字符\<br />        (08)\'        字符'<br />        (09)\"        字符"<br />        (10)\...      1-3位八进制ASCII码代表的字符('\101')<br />        (11)\x.....   十六进制ASCII码代表的字符，位数约束不严格，在字符串表示某个字符时请慎</font>
				<font face="宋体" size="4">用之<br />        (12)\uxxxx    四位16进制数字<br />          或\Uxxxxxxxx八位16进制数字实现通用符号(Universal character name)<br />          注意，必须是四位或八位，位数少或多都会出错。</font>
		</div>
		<div>
				<font face="宋体" size="4">    </font>
		</div>
		<div>
				<font face="宋体" size="4">    (二)字符串，用双引号定界，如"Code::Blocks"，注意字符串的长度与占用内存的大小，因字符串结</font>
				<font face="宋体" size="4">束标志为'\0'，所以占用内存的大小比实际可用长度多1个字符。字符串结束标志不必特别指明，</font>
				<font face="宋体" size="4">"abcdeabcde\0",特别指明反而会再多占用一个字节的内存空间。<br />#include &lt;iostream&gt;<br />#include &lt;cstring&gt;<br />    <br />using namespace std;</font>
		</div>
		<div>
				<font face="宋体" size="4">
				</font> </div>
		<div>
				<font face="宋体" size="4">int main(int argc,char** argv) {<br />    char s[13]="abcdeabcde";</font>
		</div>
		<div>
				<font face="宋体" size="4">    char s1[]="abcdeabcde";</font>
		</div>
		<div>
				<font face="宋体" size="4">    char s2[]="abcdeabcde\0\0\0\0";<br />    cout&lt;&lt;sizeof(s)&lt;&lt;endl;<br />    cout&lt;&lt;strlen(s)&lt;&lt;endl;</font>
		</div>
		<div>
				<font face="宋体" size="4">    cout&lt;&lt;sizeof(s1)&lt;&lt;endl;<br />    cout&lt;&lt;strlen(s1)&lt;&lt;endl;</font>
		</div>
		<div>
				<font face="宋体" size="4">    cout&lt;&lt;sizeof(s2)&lt;&lt;endl;<br />    cout&lt;&lt;strlen(s2)&lt;&lt;endl;    <br />    return EXIT_SUCCESS;<br />}<br />//-----<br />结果为：<br />13<br />10</font>
		</div>
		<div>
				<font face="宋体" size="4">11</font>
		</div>
		<div>
				<font face="宋体" size="4">10</font>
		</div>
		<div>
				<font face="宋体" size="4">15</font>
		</div>
		<div>
				<font face="宋体" size="4">10<br />//-----</font>
		</div>
		<div>
				<font face="宋体" size="4">    </font>
		</div>
		<div>
				<font face="宋体" size="4">    (三)wchar_t型常量加前缀L，只能是大写L。如:<br />        wchar_t c=L'A';//这里的L可不加，看编译器是否认可<br />        wchar_t cc[]=L"mytest";//这里的L必须加</font>
		</div>
		<div>
				<font face="宋体" size="4">例:<br />#include &lt;iostream&gt;</font>
		</div>
		<div>
				<font face="宋体" size="4">using std::cout;<br />using std::endl;</font>
		</div>
		<div>
				<font face="宋体" size="4">int main(int argc,char** argv) {<br />    wchar_t c=L'A';<br />    char cc='A';<br />    wchar_t cp[]=L"mytest";<br />    char ccp[]="mytest1";<br />    cout&lt;&lt;c&lt;&lt;endl;<br />    cout&lt;&lt;(char)c&lt;&lt;endl;<br />    cout&lt;&lt;cc&lt;&lt;endl;<br />    cout&lt;&lt;cp&lt;&lt;endl;<br />    cout&lt;&lt;ccp&lt;&lt;endl;<br />    return EXIT_SUCCESS;<br />}<br />//-----<br />65<br />A<br />A<br />0x22ff60<br />mytest1<br />//-----</font>
		</div>
		<div>
				<font face="宋体" size="4">
				</font> </div>
		<div>
				<font face="宋体" size="4">    二、整型常量</font>
		</div>
		<div>
				<font face="宋体" size="4">
						<br /> </font>
		</div>
		<div>
				<font face="宋体" size="4">    (一)书写常量时，若不加任何修饰符，编译器通常会认为是int整型，但有时也会根据操作自动实现</font>
				<font face="宋体" size="4">合适的转换。<br />#include &lt;iostream&gt;<br />#include &lt;climits&gt;</font>
		</div>
		<div>
				<font face="宋体" size="4">using namespace std;</font>
		</div>
		<div>
				<font face="宋体" size="4">int main(int argc,char** argv) {<br />    cout&lt;&lt;INT_MAX&lt;&lt;endl;<br />    cout&lt;&lt;SHRT_MAX&lt;&lt;endl;<br />    short x=32768;<br />    short k=32767+1;<br />    long long y=2147483647;<br />    long long d=INT_MAX+1;<br />    cout&lt;&lt;x&lt;&lt;endl;<br />    cout&lt;&lt;k&lt;&lt;endl;<br />    cout&lt;&lt;y&lt;&lt;endl;<br />    cout&lt;&lt;d&lt;&lt;endl;<br />    return EXIT_SUCCESS;<br />}<br />//-----<br />2147483647<br />32767<br />-32768<br />-32768<br />2147483647<br />-2147483648<br />//-----</font>
		</div>
		<div>
				<font face="宋体" size="4">
				</font> </div>
		<div>
				<font face="宋体" size="4">    (二)无符号整型后缀是U(u),long型后缀是L(l),long long型后缀是LL(ll)，L或LL或以与U组合。</font>
		</div>
		<div>
				<br />
				<font face="宋体" size="4">    三、浮点型常量</font>
		</div>
		<div>
				<font face="宋体" size="4">
						<br />    默认是double类型，表示float类型常量加后缀F(f)，表示long double类型常量加后缀L(l)。</font>
		</div>
		<div>
				<font face="宋体" size="4">
				</font> </div>
		<div>
				<font face="宋体" size="4">    四、布尔型常量只有true和false，只认小写。当然可以用常数来表示，0为假，非零为真。</font>
		</div>
		<div> </div>
		<div>
				<font face="宋体" size="4">bool x=false;<br />bool y=1.234;<br />cout&lt;&lt;x&lt;&lt;endl;<br />cout.setf(ios_base::boolalpha);<br />cout&lt;&lt;y&lt;&lt;endl;</font>
		</div>
		<div>
				<font face="宋体" size="4">//-----<br />0<br />true<br />//-----</font>
		</div>
		<div>
				<font face="宋体" size="4">
				</font> </div>
		<div>
				<font face="宋体" size="4">例1:只有一个函数，但调用时参数不同，编译器尽量匹配<br />#include &lt;iostream&gt;</font>
		</div>
		<div>
				<font face="宋体" size="4">using namespace std;</font>
		</div>
		<div>
				<font face="宋体" size="4">void show(long);</font>
		</div>
		<div>
				<font face="宋体" size="4">int main(int argc,char** argv) {<br />    show(123);<br />    show(123L);<br />    show(123UL);<br />}</font>
		</div>
		<div>
				<font face="宋体" size="4">void show(long demo) {<br />    cout&lt;&lt;"long"&lt;&lt;endl;<br />}<br />//-----<br />long<br />long<br />long<br />//-----</font>
		</div>
		<div>
				<font face="宋体" size="4">例2:有多个函数，编译器会认为是人为设计函数重载，将不再自动匹配<br />#include &lt;iostream&gt;</font>
		</div>
		<div>
				<font face="宋体" size="4">using namespace std;</font>
		</div>
		<div>
				<font face="宋体" size="4">void show(int);<br />void show(long);<br />void show(unsigned long);</font>
		</div>
		<div>
				<font face="宋体" size="4">int main(int argc,char** argv) {<br />    show(123);<br />    show(123L);<br />    show(123UL);//改为show(123LL)试试如何？将会出错。<br />}</font>
		</div>
		<div>
				<font face="宋体" size="4">void show(int demo) {<br />    cout&lt;&lt;"int"&lt;&lt;endl;<br />}<br />void show(long demo) {<br />    cout&lt;&lt;"long"&lt;&lt;endl;<br />}<br />void show(unsigned long demo) {<br />    cout&lt;&lt;"unsigned long"&lt;&lt;endl;<br />}<br />//-----<br />int<br />long<br />unsigned long<br />//-----</font>
		</div>
<img src ="http://www.blogjava.net/Yipak/aggbug/227334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-05 22:24 <a href="http://www.blogjava.net/Yipak/articles/227334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC_文件操作</title><link>http://www.blogjava.net/Yipak/articles/227022.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Thu, 04 Sep 2008 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/227022.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/227022.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/227022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/227022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/227022.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">1</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的查找</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br /></font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当对一个文件操作时，如果不知道该文件是否存在，就要首先进行查找。</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">MFC</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中有一个专门用来进行文件查找的类</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CFileFind”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CString strFileTitle; <br /><br />CFileFind finder; <br /><br />BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab"); <br /><br />while(bWorking) <br /><br />{ <br /><br />bWorking=finder.FindNextFile(); <br /><br />strFileTitle=finder.GetFileTitle(); <br /><br />} <br /><br />2</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的打开</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">/</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保存对话框</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br /></font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">让用户选择文件进行打开和存储操作时，就要用到文件打开</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">/</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保存对话框。</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">MFC</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的类</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CFileDialog”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用于实现这种功能。使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CFileDialog”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声明一个对象时，第一个</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">BOOL</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">型参数用于指定文件的打开或保存，当为</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">TRUE</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时将构造一个文件打开对话框，为</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">FALSE</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时构造一个文件保存对话框。</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br /></font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在构造</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CFileDialog”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象时，如果在参数中指定了</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“OFN_ALLOWMULTISELECT”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风格，则在此对话框中可以进行多选操作。此时要重点注意为此</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CFileDialog”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象的</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“m_ofn.lpstrFile”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分配一块内存，用于存储多选操作所返回的所有文件路径名，如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演示了文件打开对话框的使用方法。</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, "All Files (*.*)|*.*| |", AfxGetMainWnd());<br /><br />CString str(" ", 10000); <br /><br />mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000); <br /><br />str.ReleaseBuffer(); <br /><br />POSITION mPos=mFileDlg.GetStartPosition(); <br /><br />CString pathName(" ", 128); <br /><br />CFileStatus status; <br /><br />while(mPos!=NULL) <br /><br />{ <br /><br />pathName=mFileDlg.GetNextPathName(mPos); <br /><br />CFile::GetStatus(pathName, status); <br /><br />} <br /><br />3</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的读写</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br /></font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的读写非常重要，下面将重点进行介绍。文件读写最普通的方法是直接使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CFile”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类进行，如文件的读写可以使用下面的方法：</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />//</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对文件进行读操作</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />char sRead[2]; <br /><br />CFile mFile(_T("user.txt"),CFile::modeRead); <br /><br />if(mFile.GetLength()&lt;2) <br /><br />return; <br /><br />mFile.Read(sRead</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">2); <br /><br />mFile.Close(); <br /><br />//</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对文件进行写操作</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CFile mFile(_T("user.txt"), CFile::modeWrite|CFile::modeCreate); <br /><br />mFile.Write(sRead</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">2); <br /><br />mFile.Flush(); <br /><br />mFile.Close(); <br /><br /></font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虽然这种方法最为基本，但是它使用烦琐，而且功能非常简单。这里推荐的是使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CArchive”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，它的使用方法简单且功能十分强大。首先还是用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CFile”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声明一个对象，然后用这个对象的指针做参数声明一个</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CArchive”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象，这样就可以非常方便地存储各种复杂的数据类型了。它的使用方法见下例：</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />//</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对文件进行写操作</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CString strTemp; <br /><br />CFile mFile; <br /><br />mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); <br /><br />CArchive ar(&amp;mFile</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CArchive::store); <br /><br />ar&lt;&lt;strTemp; <br /><br />ar.Close(); <br /><br />mFile.Close(); <br /><br />//</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对文件进行读操作</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CFile mFile; <br /><br />if(mFile.Open("d:\\dd\\try.TRY"</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CFile::modeRead)==0) <br /><br />return; <br /><br />CArchive ar(&amp;mFile</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CArchive::load); <br /><br />ar&gt;&gt;strTemp; <br /><br />ar.Close(); <br /><br />mFile.Close(); <br /><br />“CArchive”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“&lt;&lt;”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“&gt;&gt;”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作符用于简单数据类型的读写，对于</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CObject”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">派生类的对象的存取要使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">ReadObject()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">WriteObject()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CArchive”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">ReadClass()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">WriteClass()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">还可以进行类的读写，如：</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />//</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">存储</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CAboutDlg</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); <br /><br />//</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">读取</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CAboutDlg</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CRuntimeClass*mRunClass=ar.Read <br /><br />Class(); <br /><br />//</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CAboutDlg</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CObject* pObject=mRunClass-&gt;CreateObject(); <br /><br />((CDialog* )pObject)-&gt;DoModal(); <br /><br /></font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虽然</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">VC</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的文档</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">/</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">视结构中的文档也可进行这些操作，但是不容易理解、使用和管理，如果要进行的文件操作只是简单的读写整行的字符串，建议使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“CStdioFile”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用它来进行此类操作非常方便，如下例：</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />CStdioFile mFile; <br /><br />CFileException mExcept; <br /><br />mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &amp;mExcept); <br /><br />CString string="I am a string."; <br /><br />mFile.WriteString(string); <br /><br />mFile.Close(); <br /><br />4</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．临时文件的使用</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br /></font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">正规软件经常用到临时文件，经常可以看到</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“C:\Windows\Temp”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下有大量的扩展名为</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">“.tmp”</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的文件，这些就是程序运行时建立的临时文件。临时文件的使用方法基本与常规文件一样，只是文件名应该调用函数</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">GetTempFileName()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">获得。它的第一个参数是建立此临时文件的路径，第二个参数是建立临时文件名的前缀，第四个参数用于得到建立的临时文件名。得到此临时文件名以后，就可以用它来建立并操作文件了，如：</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />char szTempPath[_MAX_PATH]</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">szTempfile[_MAX_PATH]; <br /><br />GetTempPath(_MAX_PATH, szTempPath); <br /><br />GetTempFileName(szTempPath</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">_T ("my_")</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">0</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">szTempfile); <br /><br />CFile m_tempFile(szTempfile</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CFile:: modeCreate|CFile:: modeWrite); <br /><br />char m_char='a'; <br /><br />m_tempFile.Write(&amp;m_char</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">2); <br /><br />m_tempFile.Close(); <br /><br />5</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．文件的复制、删除等</span>
				</font>
				<font size="3">
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman"> <br /><br />MFC</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中没有提供直接进行这些操作的功能，因而要使用</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">SDK</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">SDK</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的文件相关函数常用的有</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CopyFile()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">CreateDirectory()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">DeleteFile()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">MoveFile()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。它们的用法很简单，可参考</span>
						<span lang="EN-US" style="mso-bidi-font-size: 10.5pt">
								<font face="Times New Roman">MSDN</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				</font>
		</p>
<img src ="http://www.blogjava.net/Yipak/aggbug/227022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-04 17:25 <a href="http://www.blogjava.net/Yipak/articles/227022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>介绍一个P2P点播直播开源项目，挺不错的</title><link>http://www.blogjava.net/Yipak/articles/227019.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Thu, 04 Sep 2008 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/227019.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/227019.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/227019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/227019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/227019.html</trackback:ping><description><![CDATA[
		<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">使用平台：<br /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">客户端</span><span lang="EN-US"><font face="Times New Roman">:Windows </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器</span><span lang="EN-US"><font face="Times New Roman">:Windows &amp; Linux</font></span></p><p><br />框架图例：<br /><img height="514" alt="" src="http://www.cppblog.com/images/cppblog_com/aurain/frame.gif" width="559" border="0" /><br /><br />项目简介：<br /> P2P点播直播开源项目是一个由Kevin发起，多人参与开发并不断更新，符合GPL开源协议的开源项目。</p><p>项目成员： 系统架构及初期开发： 符文科(Kevin), 马军(Mark), 张威, 高成, 王亮 <br />  LINUX相关开发:   李桂生(QQ:674859634)<br />  JSP网站系统:   伍林(QQ:86409354)<br />  ASP网站系统:   徐小均(QQ:275992019)<br />  Bittorrent模块:  Lism(QQ:32437503[Johnny]), 肖双全(3707878[Color_X])</p><p>目的：缩短企业同类型项目开发周期，集成多种P2P协议，如BT,EMULE等。</p><p>主要功能：<br /> Peer 间传输数据采用UDP，能有效的穿透防火墙，在进一步的版本中将实现TCP及UPNP穿透<br /> 能够实现流媒体的点播及直播，还能共享其他文件，文件类型不限。<br /> 流媒体文件支持广泛，如rmvb,wmv,flv,mp4等</p><p>源代码下载论坛：<a href="http://opensource.kan8888.com/">http://opensource.kan8888.com</a></p><p>SVN下载地址：</p><p> 工程地址: svn://p2p.kan8888.com/P2PCenter<br /> 用户名：mc_public<br /> 密码：kan8888.com</p><p>sourceforge.net 下载地址：<br />website:http://p2pmedia.svn.sourceforge.net<br />SVN 地址：<a href="https://p2pmedia.svn.sourceforge.net/svnroot/p2pmedia">https://p2pmedia.svn.sourceforge.net/svnroot/p2pmedia</a></p><p>演示网站：<a href="http://www.skyvcd.com/">http://www.skyvcd.com</a></p><p>最新源代码打包下载：<a href="http://opensource.kan8888.com/soft/P2PCenter_last.rar">http://opensource.kan8888.com/soft/P2PCenter_last.rar</a></p><p>P2P点播直播开源项目 非常不错<br /><a href="http://opensource.kan8888.com/">http://opensource.kan8888.com</a><br /></p></span>
<img src ="http://www.blogjava.net/Yipak/aggbug/227019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-04 17:17 <a href="http://www.blogjava.net/Yipak/articles/227019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ansi、Unicode、UTF8字符串之间的转换和写入文本文件 </title><link>http://www.blogjava.net/Yipak/articles/227015.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Thu, 04 Sep 2008 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/227015.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/227015.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/227015.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/227015.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/227015.html</trackback:ping><description><![CDATA[
		<p>转载请注明出处<a href="http://www.cppblog.com/greatws/archive/2008/08/31/60546.html"><font color="#1a8bc8">http://www.cppblog.com/greatws/archive/2008/08/31/60546.html</font></a><br /><br />最近有人问我关于这个的问题，就此写一篇blog<br /><br />Ansi字符串我们最熟悉，英文占一个字节，汉字2个字节，以一个\0结尾，常用于txt文本文件<br />Unicode字符串，每个字符(汉字、英文字母)都占2个字节，以2个连续的\0结尾，NT操作系统内核用的是这种字符串，常被定义为typedef unsigned short wchar_t;所以我们有时常会见到什么char*无法转换为unsigned short*之类的错误，其实就是unicode<br />UTF8是Unicode一种压缩形式，英文A在unicode中表示为0x0041，老外觉得这种存储方式太浪费，因为浪费了50%的空间，于是就把英文压缩成1个字节，成了utf8编码，但是汉字在utf8中占3个字节，显然用做中文不如ansi合算，这就是中国的网页用作ansi编码而老外的网页常用utf8的原因。<br />UTF8在还游戏里运用的很广泛，比如WOW的lua脚本等<br /><br />下面来说一下转换，主要用代码来说明吧<br />写文件我用了CFile类，其实用FILE*之类的也是一样，写文件和字符串什么类别没有关系，硬件只关心数据和长度<br /><br />Ansi转Unicode<br />介绍2种方法<br /></p>
		<br />
		<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">
				<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonAnsiToUnicode()<br /><img id="Codehighlighter1_51_1122_Open_Image" onclick="this.style.display='none'; Codehighlighter1_51_1122_Open_Text.style.display='none'; Codehighlighter1_51_1122_Closed_Image.style.display='inline'; Codehighlighter1_51_1122_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1122_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_1122_Closed_Text.style.display='none'; Codehighlighter1_51_1122_Open_Image.style.display='inline'; Codehighlighter1_51_1122_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_51_1122_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_51_1122_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> ansi to unicode</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> szAnsi </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">abcd1234你我他</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">预转换，得到所需空间的大小</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> wcsLen </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wchar_t</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> wszString </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> wchar_t[wcsLen </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">转换</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">最后加上'\0'</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    wszString[wcsLen] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">\0</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">unicode版的MessageBox API</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">接下来写入文本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写文本文件，头2个字节0xfeff，低位0xff写在前</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">1.txt</span>
						<span style="COLOR: #000000">")</span>
						<span style="COLOR: #000000">, CFile::modeWrite </span>
						<span style="COLOR: #000000">|</span>
						<span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">文件开头</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Write(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\xff\xfe</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">2</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">写入内容</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    cFile.Write(wszString, wcsLen </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">sizeof</span>
						<span style="COLOR: #000000">(wchar_t));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] wszString;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wszString </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">方法2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">设置当前地域信息，不设置的话，使用这种方法，中文不会正确显示<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">需要#include&lt;locale.h&gt;</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    setlocale(LC_CTYPE, </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">chs</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wchar_t wcsStr[</span>
						<span style="COLOR: #000000">100</span>
						<span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">注意下面是大写S，在unicode中，代表后面是ansi字符串<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">swprintf是sprintf的unicode版本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">格式的前面要加大写L，代表是unicode</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    swprintf(wcsStr, L</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">%S</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, szAnsi);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxW(GetSafeHwnd(), wcsStr, wcsStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<br />
		<br />Unicode转Ansi<br />也是2种方法<br /><br /><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"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToAnsi()<br /><img id="Codehighlighter1_51_1013_Open_Image" onclick="this.style.display='none'; Codehighlighter1_51_1013_Open_Text.style.display='none'; Codehighlighter1_51_1013_Closed_Image.style.display='inline'; Codehighlighter1_51_1013_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1013_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_1013_Closed_Text.style.display='none'; Codehighlighter1_51_1013_Open_Image.style.display='inline'; Codehighlighter1_51_1013_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_51_1013_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_51_1013_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> unicode to ansi</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wchar_t</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> wszString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abcd1234你我他</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">预转换，得到所需空间的大小，这次用的函数和上面名字相反</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> ansiLen </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">同上，分配空间要给'\0'留个空间</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> szAnsi </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">[ansiLen </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">unicode版对应的strlen是wcslen</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">最后加上'\0'</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    szAnsi[ansiLen] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Ansi版的MessageBox API</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    ::MessageBoxA(GetSafeHwnd(), szAnsi, szAnsi, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">接下来写入文本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">写文本文件，ANSI文件没有BOM</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.txt</span><span style="COLOR: #000000">")</span><span style="COLOR: #000000">, CFile::modeWrite </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">文件开头</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">写入内容</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    cFile.Write(szAnsi, ansiLen </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szAnsi;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szAnsi </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">方法2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">和上面一样有另一种方法</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    setlocale(LC_CTYPE, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">chs</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> szStr[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">注意下面是大写，在ansi中，代表后面是unicode字符串<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">sprintf</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    sprintf(szStr, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%S</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, wszString);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxA(GetSafeHwnd(), szStr, szStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br /><br />Unicode转UTF8<br /><br /><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"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToU8()<br /><img id="Codehighlighter1_49_850_Open_Image" onclick="this.style.display='none'; Codehighlighter1_49_850_Open_Text.style.display='none'; Codehighlighter1_49_850_Closed_Image.style.display='inline'; Codehighlighter1_49_850_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_850_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_850_Closed_Text.style.display='none'; Codehighlighter1_49_850_Open_Image.style.display='inline'; Codehighlighter1_49_850_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_49_850_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_49_850_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> unicode to UTF8</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wchar_t</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> wszString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abcd1234你我他</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">预转换，得到所需空间的大小，这次用的函数和上面名字相反</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> u8Len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">同上，分配空间要给'\0'留个空间<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> szU8 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">[u8Len </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">unicode版对应的strlen是wcslen</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">最后加上'\0'</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    szU8[u8Len] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">MessageBox不支持UTF8,所以只能写文件<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">接下来写入文本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">写文本文件，UTF8的BOM是0xbfbbef</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">), CFile::modeWrite </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">文件开头</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">写BOM，同样低位写在前</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    cFile.Write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\xef\xbb\xbf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">写入内容</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    cFile.Write(szU8, u8Len </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szU8;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szU8 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />UTF8转UNICODE<br /><br /><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"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonU8ToUnicode()<br /><img id="Codehighlighter1_49_613_Open_Image" onclick="this.style.display='none'; Codehighlighter1_49_613_Open_Text.style.display='none'; Codehighlighter1_49_613_Closed_Image.style.display='inline'; Codehighlighter1_49_613_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_613_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_613_Closed_Text.style.display='none'; Codehighlighter1_49_613_Open_Image.style.display='inline'; Codehighlighter1_49_613_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_49_613_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_49_613_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">UTF8 to Unicode<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">由于中文直接复制过来会成乱码，编译器有时会报错，故采用16进制形式</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> szU8 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">预转换，得到所需空间的大小</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> wcsLen </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wchar_t</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> wszString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> wchar_t[wcsLen </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">转换</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">最后加上'\0'</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    wszString[wcsLen] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">unicode版的MessageBox API</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">写文本同ansi to unicode</span><span style="COLOR: #008000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />Ansi转换utf8和utf8转换Ansi就是上面2个的结合，把unicode作为中间量，进行2次转换即可<br /><br />by greatws <img src ="http://www.blogjava.net/Yipak/aggbug/227015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-04 17:12 <a href="http://www.blogjava.net/Yipak/articles/227015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用C#实现语音技术</title><link>http://www.blogjava.net/Yipak/articles/226960.html</link><dc:creator>死神</dc:creator><author>死神</author><pubDate>Thu, 04 Sep 2008 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/Yipak/articles/226960.html</guid><wfw:comment>http://www.blogjava.net/Yipak/comments/226960.html</wfw:comment><comments>http://www.blogjava.net/Yipak/articles/226960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Yipak/comments/commentRss/226960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Yipak/services/trackbacks/226960.html</trackback:ping><description><![CDATA[“电脑朗读”（英文）一个很好的触发点，通过它可以实现电子小说阅读、英文听力测试、英文单词学习... <br /><br />下面的Speech已对MSTTS作了简单封装。 <br /><br />1.安装好MSTTS（如果你有装金山词霸，系统就已经安装了）,可以在winnt\speech中打到vtxtauto.tlb文件； <br /><br />2.用.Net SDK自带的tlbimp工具把vtxtauto.tlb转换成.dll格式: <br /><br />tlbimp vtxtauto.tlb /silent /namespace:mstts /out:mstts.dll <br /><br />这时的mstts.dll已成为.net framework运行库的一个类。 <br /><br />3.编写一个封装vtxtauto的简单类:Speech . <br /><br />//========================Speech.cs====================== <br /><br />using System； <br /><br />using mstts； //MSTTS名称空间 <br /><br />namespace Bedlang{ //定义名称空间 <br /><br />public class Speech{ <br /><br />private VTxtAuto VTxtAutoEx； <br /><br />public Speech（）{ <br /><br />VTxtAutoEx = new VTxtAuto（）； <br /><br />VTxtAutoEx.Register（" "," "）； //注册COM组件 <br /><br />} <br /><br />public void Speak（String text）{ <br /><br />VTxtAutoEx.Speak（text, 0）； //发音 
<p class="Lpj418">专业的3S站 3s8.cn</p><br /><br />} <br /><br />} <br /><br />} <br /><br />//========================Speech.cs====================== <br /><br /><br />4.编译Bedlang.Speech <br /><br />csc /target:library /out:Bedlang.dll speech.cs /r:mstts.dll <br /><br />如果用vs.net开发，可直接生成项目就可以了。 <br /><br />5.发音实现 <br /><br />//========================demo.cs====================== <br /><br />分别加入Label,TextBox,Button控件各一个到windows Form中，修改它们的属性，源代码如下： <br /><br />using System； <br /><br />using System.Drawing； <br /><br />using System.Collections； <br /><br />using System.ComponentModel； <br /><br />using System.Windows.Forms； <br /><br />using System.Data； <br /><br />namespace Bedlang <br /><br />{ <br /><br />/// <br /><br />/// Form1 的摘要说明。 <br /><br />/// <br /><br />public class demo : System.Windows.Forms.Form <br /><br />{ <br /><br />private System.Windows.Forms.Label label1； <br /><br />private System.Windows.Forms.TextBox textBox1； <br /><br />private System.Windows.Forms.Button button1； 
<p class="Lpj418">专业的3S站 3s8.cn</p><br /><br />/// <br /><br />/// 必需的设计器变量。 <br /><br />/// <br /><br />private System.ComponentModel.Container components = null； <br /><br />public demo（） <br /><br />{ <br /><br />// <br /><br />// Windows 窗体设计器支持所必需的 <br /><br />// <br /><br />InitializeComponent（）； <br /><br />// <br /><br />// TODO: 在 InitializeComponent 调用后添加任何构造函数代码 <br /><br />// <br /><br />} <br /><br />/// <br /><br />/// 清理所有正在使用的资源。 <br /><br />/// <br /><br />protected override void Dispose（ bool disposing ） <br /><br />{ <br /><br />if（ disposing ） <br /><br />{ <br /><br />if （components != null） <br /><br />{ <br /><br />components.Dispose（）； <br /><br />} <br /><br />} <br /><br />base.Dispose（ disposing ）； <br /><br />} <br /><img src ="http://www.blogjava.net/Yipak/aggbug/226960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Yipak/" target="_blank">死神</a> 2008-09-04 15:02 <a href="http://www.blogjava.net/Yipak/articles/226960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>