about CString of EVC(just like Win98)

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
EVC在某种意义上说,相当于VC的一个子集。因为大多EVC有的功能,VC也具备,而VC有的功能,EVC则不一定拥有。在VC中,操作字符串很方便,因为WINDOWS的字处理能力实在是很强大,它支持多种字符集。我们随便使用一个CString str=“你好”,就要以输入我们想要的中文字符串。在EVC中这种情况有所改变,因为WINCE的字处理能力不够强大,它在处理汉字里统一将它示为UNICODE编码,所以我们在EVC中片理中文字符串时需要用到UNICODE编码。下面结合WINDOWS 下VC字符串的处理,对比一下EVC中文字符串的片理方法。

一、中文字符串定义
1、在VC中我们如果定义一个中文字符串,可以使用CString str=“你好”或LPCTSTR  str=“你好”。
2、在EVC中我们如果想定义一个中文字符串,可以使用如下方法:CString str=_T(“你好”)或者LPCTSTR  str=“你好”,这里LPCTSTR在EVC里就是表示UNICODE字符串。值得注意的是_T()宏中,括号中只能填写常量,不能填定变量。
二、字符串操作
1、在VC中我们想拷贝字符串,可以作如下操作:
      char s[20];
      CString str=“你好”;
      strcpy(s,str);
      在EVC中则不能这样做,首先定义中文数组应该用双字节指针wchar_t,而拷贝函数也不能用strcpy,而应该用:wchar_t * wcscpy(wchar_t * wDest,wchar_t wSource);函数,操作如下:
      wchar_t s[20];
      CString str=“你好”;
      wcscpy(s,(LPCTSTR)str); //前面没有转成UNICODE编码,所以这里需要强制转换
2、在VC中我们想在一个字符串中查找某个子串,只需要作下面的操作:
       CString str=“你是一个好学生”;
       str.Find(“学生”);
       在EVC中不能这样做,因为中文字符串为UNICODE编码,我们必需在查找函数的参数里作如下修改:
       str.Find(_T(“学生”));

以上是我在用EVC写应用程序时操作中文字符串的一些积累,以文记之,以备不时之需。
strcpy、wcscpy与_tcscpy 4.5.4  strcpy、wcscpy与_tcscpyC++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如:char *strcpy(char *strDestination, const char *strSource);  wchar_t *wcscpy(wchar_t *strDestination, const wchar_t *strSource) 阅读详情

相关推荐

浅谈EVC中文字符串操作

EVC在某种意义上说,相当于VC的一个子集。因为大多EVC有的功能,VC也具备,而VC有的功能,EVC则不一定拥有。在VC中,操作字符串很方便,因为WINDOWS的字处理能力实在是很强大,它支持多种字符集。我们随便使用一个CString str=“你好”,就要以输入我们想要的中文字符串。在EVC中这种情况有所改变,因为WINCE的字处理能力不够强大,它在处理汉字里统一将它示为UNICODE编码,所

1374

C标准库源码解剖(5):字符串处理函数string.h和wchar.h()

    3、字符串复制strcpy,strncpy,wcscpy,wcsncpy:将字符串src(或其前n个字符)复制到dest中,覆盖dest的内容。实现中先检查指针是否越界,计算指针dest到src的偏移,然后开始做复制操作,复制到dest的开始位置处,以覆盖dest的内容。对strncpy,也采用了每4个字符作为一组来进行复制的方法,以加快复制速度。/* strcpy.c:strcpy函

Jack Zhou的专栏 2864

C++拷贝wstring到wchar_t*中踩的坑

使用wchar_t指针将wstring中的数据拿出来,发现释放的时候异常

weixin_43891802的博客 1253

C++字符类型总结区别wchar_t,char,WCHAR

转至:http://www.360doc.com/content/12/0807/01/9290626_228750141.shtml 1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。   UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里:   typedef unsigned short wchar_t;   另外,在头文件中有这样的定义:typedef

aoxin的博客 929

wchar_t相关函数

wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式。wchar_t类型主要用在国际化程序的实现中,但它不等同于Unicode编码。Unicode编码的字符一般以wchar_t类型存储。char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。函数介绍:wcslen()   类似与char*类型作参数的strlen()函数    ...

六碗铁biu_ 的博客 1771

C/C++常见字符串处理函数

获取字符串长度 strlen,wcslen返回字符串中的字符数,不包括结尾的空字符。 size_t strlen(const char *str); size_t wcslen(const wchar_t *str); strlen,wcslen存在缓冲区溢出问题,应该使用更安全的版本:strnlen,strnlen_s,wcsnlen,wcsnlen_s,它们在指定字符数找不到空字符则返回指定...

天道酬勤 1538

mfc “strcpy”: 不能将参数 1 从“WCHAR [128]”转换为“char*解决办法

解决方案: 编码问题,不要用strcpy,这个是ansi字符集下的函数,用unicode字符集下的拷贝函数wcscpy 比如: asci:strcpy(m_NotifyData.szTip, "认证系统客户端"); unicode:wcscpy(m_NotifyData.szTip, L"认证系统客户端");

wushuang443的专栏 4854

笔记:C++字符型基础

笔记:C++字符型基础

Q324411601的博客 328

wchar_t和wstring类型输出问题

请问怎么才能输出wchar_t和wstring类型的字符串,用cout输出不了,用wcout编译提示没这个东西. DEV-C++环境. #include #include #include using namespace std; int main() {   char s1[]="char";   wchar_t s2[]=L"wchar_t";  //wstring ws=L"wstring"

坚持,才是力量.老实做人,踏实做事. 1万+

WChar_t 字符集的操作函数

函数介绍: wcslen()   类似与char*类型作参数的strlen()函数      用来获取wchar_t*变量的长度(不包含终结符) wcscpy()  类似与char*类型作参数的strcpy()函数      用来进行wchar_t*变量之间的复制 同样的还有  wcsncpy() wcscmp()  类似与char*类型的strcmp()函数      用

Alexander_Frank的博客 7033

如何拷贝一个wchar_t类型的字符串

Do this, wchar_t clone[260]; wcscpy(clone,szPath); Or, if you want to allocate memory yourself, wchar_t *clone = new wchar_t[wcslen(szPath)+1]; wcscpy(clone,szPath); //use it d...

weixin_33711641的博客 3147

strcpy和strncpy区别

第一种情况: char* p="how are you ?"; char name[20]="ABCDEFGHIJKLMNOPQRS";   strcpy(name,p);   //name改变为"how are you ?\0OPQRS "     ====>错误!

494

VC++中的char,wchar_t,TCHAR(转载)

总体简介:由于字符编码的不同,在C++中有三种对于字符类型:char, wchar_t , TCHAR。其实TCHAR不能算作一种类型,他紧紧是一个宏。我们都知道,宏在预编译的时候会被替换成相应的内容。TCHAR 在使用多字节编码时被定义成char,在Unicode编码时定义成wchar_t。1.VC++中的char,wchar_t,TCHAR大家一起做一个项目,经常发现有的人爱用st...

a1341188的博客 535

C++ 宽字节拷贝

WCHAR wcarr1[100] = L"asd"; WCHAR wcarr2[100] = {0}; wcsncpy_s(wcarr2,wcarr1,sizeof(wcarr2)); wcout << wcarr2 << endl; 效果图:

LYSM 1598

LPCTSTR char 类型, wchar_t 类型,字符数组区别

LPCTSTR char 类型, wchar_t 类型,字符数组区别在VS2005/2008中,c++对字符串的处理已经默认采用了unicode版本了。Unicode可以使你的程序能够更全面的支持多国语言文字,即使在英文,日文等系统下也不会出现乱码。而且NT内核基于Unicode,可以减少了系统的编码转换开销,提高程序运行速度,并且可以支持更多的微软新推出的仅支持Unicode的A

Code Captain的专栏 2420

TCHAR 、CString 、LPCTSTR、char*、LPWSTR、char []、wchar_t *、string之间的转换

一、TCHAR 、CString 、LPCTSTR转换 TCHAR  tc[MAX_PATH] = { 0 }; wcout &lt;&lt;"TCHAR 转换成LPCTSTR类型=="&lt;&lt; (LPCTSTR)tc&lt;&lt;endl; CString cs= tc; wcout &lt;&lt;"TCHAR 转换成CString类型=="&lt;&lt; cs&a

qq_34227896的博客 7320

LPCTSTR乱码问题

编译器:VS2013 写一个串行化保存文件的函数 次函数编译没问题,但运行后,保存的文件名师乱码的 解决办法: 将LPCTSTR 换为 CA2T问题解决

qq_37644877的博客 1158

char数组转换为LPCTSTR乱码问题 某人的评论里得出的解决方法

 TCHAR *p=new TCHAR[100]; p=_T("kdjff");

JasNathan的博客 1614

关于解决MFC中LPCTSTR以及UNICODE上乱码的方法

由于使用的是VS2013,所以在MFC中是UNICODE字符集,所以总是不能很好地解决LPCTSTR的问题,到处显示是没有合适的什么char,string,等等到LPCTSTR的转换,尤其是当我要将文本信息显示在MFC的静态文本控件中时,使用SetWindowTextW函数,就一直显示是乱码,试过网上的各种方法,最终还是找到一个很简单的方法就解决了。 double total_err =

jameshater的博客 4939
上一篇: HOWTO: Applying a user definable font size (JAVA)
下一篇: Notification Bubble with Text Input Control.(MFC)
seamanjiang
博客等级 码龄23年 5粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值