VC图像处理(二):VC中的字符串
时间:2010-11-01 来源:timke212004
字符串操作由于涉及到指针所以很容易出错,VC进行了很多的字符串的封装,这也导致了对一些字符串类的混淆。在网上看到一篇pdf文章,对C++中的字符串及标准进行了总结,可以下载自: http://download.csdn.net/source/373184
对此,作了些笔记: -
1.Unicode编码标准一个字符都是16位,其代表类型是wchar_t,而TCHAR类型在采用Unicode方式编译时会使用wchar_t,而普通编译则是char。
0.在Win16下有长指针(LP)与短指针(P)的区别,在Win32下没有区别,都是32位的。
1.strlen 如果对LPCTSTR或者LPTSTR等UNICODE的字符串使用的话会得到原来长度的两倍。而应该用wcslen()或者lstrlen()。 lstrlen(LPCTSTR lpString),wcslen(const wchar_t *string),strlen(const char *string)。
2.VC的字符串可以直接用CString str=“你好”或LPCTSTR str=“你好”。但是Embeded VC则必须用CString str=_T(“你好”)或者LPCTSTR str=“你好”。_T()宏中,括号中只能填写常量,不能填定变量。LPCTSTR在EVC里就是表示UNICODE字符串。
3.CString是一个动态TCHAR数组,BSTR是专有格式字符串需要用系统提供的函数来操纵。LPCTSTR是一个常量的TCHAR指针。
4.LPSTR 是一个指向以''结尾的ANSI字符数组指针,与char*可以互换使用。LPCSTR是LPSTR的const常量。LPWSTR与LPCWSTR的字符数据是16位的wchar_t。为了实现两种编码的通用,提出了TCHAR定义。
如果定义了_UNICODE使用Unicode编译则声明为 typedef wchar_t TCHAR,而如果没有定义_UNICODE使用变通编译则声明为typedef char TCHAR。LPTSTR和LPCTSTR中的T字母表示每个字符都是TCHAR。CString中的字符是TCHAR型的。