上一页 1 ··· 78 79 80 81 82 83 84 85 86 ··· 161 下一页
摘要: 利用CString和CStringA进行UNICODE字符串和ANSI字符串转换,CString 转化为const char *2010年01月19日 星期二 17:17使用UNICODE字符集编程时,总是需要使用那些不支持UNICODE的库,例如sqlite3,Lua等必须使用char*类型的。这个时候用CStringA是最好的。另外CStringA与CString可以灵活地随意转换赋值,注意不能这样用:CString str1;CStringA str2=str1;而要这样用:CStringA str2;str2=str1;这样就可以把UNICODE版本字符串转换为Ansi版本了,非常之强 阅读全文
posted @ 2012-11-09 17:13 郑文亮 阅读(3752) 评论(0) 推荐(1)
摘要: 前段时间,做http协议上传文件及断点续传控件时,在客户端采用C++调用CHttpConnection、CHttpFile进行文件上传。移植到Unicode编码时,上传得到的文件总是小于正常文件。最终发现问题出在CString::GetLength()方法上。当采用Unicode编码时,而且http header字符串中出现了中文或其其他多字节字符,该方法仍旧只返回字符数,而不是实际的字节数,这样在http header中的信息会比实际的少,导致http发送的数据小于预期的。 按照MSDN的说吗,在选用MBCS多字节字符串编码时,该方法会得到正确的字节数。此时没有问题。 For multiby 阅读全文
posted @ 2012-11-09 17:06 郑文亮 阅读(29238) 评论(0) 推荐(2)
摘要: 字符串的长度通常是指字符串中包含字符的数目,但有的时候人们需要的是字符串所占字节的数目。常见的获取字符串长度的方法包括如下几种。1.使用sizeof获取字符串长度sizeof的含义很明确,它用以获取字符数组的字节数(当然包括结束符\0)。对于ANSI字符串和UNICODE字符串,形式如下:sizeof(cs)/sizeof(char) sizeof(ws)/sizeof(wchar_t)可以采用类似的方式,获取到其字符的数目。如果遇到MBCS,如"中文ABC",很显然,这种办法就无法奏效了,因为sizeof()并不知道哪个char是半个字符。2.使用strlen()获取字符 阅读全文
posted @ 2012-11-09 16:17 郑文亮 阅读(644) 评论(0) 推荐(0)
摘要: 利用标准库函数strncpy(),可以将一字符串的一部分拷贝到另一个字符串中。strncpy()函数有3个参数:第一个参数是目录字符串;第二个参数是源字符串;第三个参数是一个整数,代表要从源字符串拷贝到目标字符串中的字符数。以下是一个用strncpy()函数拷贝字符串的一部分的例子:#include<stdio.h>#include<string.h>voidmain(void);voidmain(void){char*source_str="THISISTHESOURCESTRING";chardest_strl[40]={0},dest_str2 阅读全文
posted @ 2012-11-09 13:51 郑文亮 阅读(12237) 评论(3) 推荐(0)
摘要: 在计算机科学中,内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏与许多其他问题有着相似的症状,并且通常情况下只能由那些可以获得程序源代码的程序员才可以分析出来。然而,有不少人习惯于把任何不需要的内存使用的增加描述为内存泄漏,严格意义上来说这是不准确的。 一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc 阅读全文
posted @ 2012-11-09 13:14 郑文亮 阅读(394) 评论(0) 推荐(0)
摘要: //========================================================================//TITLE://malloc、realloc和new你明白了么?//AUTHOR://norains//DATE://Saturday05-January-2008//Environment://VS2005 +SDK-WINCE5.0-MIPSII//EVC + SDK-WINCE5.0-MIPSII//====================================================================== 阅读全文
posted @ 2012-11-09 10:43 郑文亮 阅读(893) 评论(0) 推荐(0)
摘要: LPTSTR GetBuffer( int nMinBufLength );nMinBufLength为buffer的字符长度,不包括结束符返回CString对象的内部buffer指针,非const,可以修改CString内容void ReleaseBuffer( int nNewLength = -1 );nNewLength为新的字符串长度,-1表示维持当前字符串长度释放多余内存注意点:调用CString的任何其他member function之前,必须先调用ReleaseBuffer,否则可能会出错!(因CString的内容改变了,而其长度未作相应修改,ReleaseBuffer完成此工 阅读全文
posted @ 2012-11-09 10:08 郑文亮 阅读(1230) 评论(0) 推荐(0)
摘要: 先 转载一段别人的文章CString类的这几个函数, 一直在用, 但总感觉理解的不够透彻, 不时还有用错的现象. 今天抽时间和Nico一起分析了一下, 算是拨开了云雾: GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾), ReleaseBuffer会把多余申请的空间释放, 归还给系统; 但使用时需要注意以下问题: 如果要保存的字符串为abc(0结尾), 则GetBuffer参数应至少为3; 如果要保存的内容不是以0结尾, 比如是读取文件数据, 则GetBuffer参数如果大 阅读全文
posted @ 2012-11-09 09:28 郑文亮 阅读(5356) 评论(0) 推荐(0)
摘要: CString内存泄露的解决办法 收藏 8W~9tE+L9k-dI St引文:在多数情况下,比较简单的使用过程中,MFC的这个BUG不会发作,也就是不会有内存泄露。那什么时候CString会暴露出BUG那?U8N#Rwq我以前出现错误的经验是:如果多次调用带有CString引用的参数的函数(形如:funstr(CString &str);这样的函数),在一定的时候(和字符串长度有关系),CString的内部引用记数器发生记数混乱,造成内存泄露。_+^%bJc J8V,^a!dH8ZRgFJ 应为vc6.0在CString类的包装上的“小问题”,CStri 阅读全文
posted @ 2012-11-09 09:11 郑文亮 阅读(8470) 评论(1) 推荐(1)
摘要: 用过C言语的人都知道每一个C的程序都会有一个main函数,但有时看别人写的程序却出现了_tmain,会感动很困惑。我当时也是很困惑,于是上网找资料看。现在将我得到的结果总结一下。因为并没有什么根据,如果有误。欢迎指正:_tmain与main的区别1。 main是C程序的函数,_tmain是main为了支持unicode所使用的main的別名2。 _tmain的定义在<tchar.h>可以找到,如#define _tmain main,所以要加#i nclude <tchar.h>才能用。_tmain()是个宏,如果是UNICODE则他是wmain()否则他是main() 阅读全文
posted @ 2012-11-09 08:49 郑文亮 阅读(1738) 评论(0) 推荐(1)
上一页 1 ··· 78 79 80 81 82 83 84 85 86 ··· 161 下一页