WinCE5.0下宽字符的7条经验总结(原创)

来源:互联网 发布:人工智能时代 pdf 编辑:程序博客网 时间:2024/06/05 12:06

WinCE5.0下宽字符的7条经验总结 BY  http://blog.csdn.net/xiaoxiongli/    blog

因为Wince只支持UNICODE!!!--仅仅记住这句话,你肯定会栽跟头,尽管它是真理!

在winCE下编程需要用16位代表一个字符的宽字符,由于在windows NT下编程习惯了,难免在winCE下要犯错误,虽然我已经在WinCE下把“宽字符”三个字刻在脑海中了。

以下是我的经验总结:

1:一般情况下(注意决不是全部,参见7)winCE下设计字符串的函数,用TEXT括起来,类也一样。

比如:CString str; 

            str.Format(TEXT("Hello everyone!!!"));

2:如需用ASCii字符(窄字符),也可以这么用:

char* p; p = "HEllo";

这样用是没有问题的,但要牢记这里是窄字符,是无法在WinCE下显示的,通常情况下还是用宽字符为好,但特殊情况下:比如说用于网络传输的情况下会用到这种,比如说我要在PDA上写一个网络程序,和PC主机进行通信。当然写成宽字符应该也没有什么问题吧?(应该没有什么问题)只不过是网络传输量增加了。

3: 所谓宽字符只是和字符串有关的,和int或者其他类型无关,该是几个字节还是几个字节

4:使用函数要注意,不是spintf了,而是swprintf,注意w代表了wchar_t的意思,还有由于WinCE不支持

5:可以用TCHAR来增加移植性,不过我不太喜欢用这个东西

6:可以使用WideCharToMultiByte和MultiByteToWideChar来进行“宽窄转换”

7:纠正一个误区,并非在所有的WinCE函数中都需要用宽字符,恰恰想法,有的函数需要用窄字符,比如WinSock的某些函数。例如:send(socketABC,  "aaaaa",  sizeof("aaaaa"))就行,而send(socketABC,  TEXT("aaaaa"),  sizeof(TEXT("aaaaa")))就无法编译通过了,当然想传的话,用结构体是一个不错的选择。

我就是初学WinCE,所以在这里栽了跟头,在IP设置上,用一个CString读进来,没有转成窄字符就去连接,导致我用TRACE来看ip地址完全正确,而就是连不上服务器,郁闷,搞了整整一天多才搞出来,浪费了时间啊,最好直接用常量字符传进去才连的上,这才发现是系统“做了手脚”。

原创粉丝点击