关于CString
来源:互联网 发布:网络语言2017流行语 编辑:程序博客网 时间:2024/03/28 17:34
1. wchar_t
类型:宽字符类型
定义:typedef unsigned short wchar_t,16位
应用:wchar_t *wchar = L"hello"
2.如果定义了_UNICODE
L: #define __T(X) L##x ,两个#称为粘贴符号。
TCHAR = wchar_t;
_T(x)=__T(x)=TEXT(x)=_TEXT(x)=L##x
如果没有定义:
TCHAR = char
_T(x)=__T(x)=TEXT(x)=_TEXT(x)=x
3. 明确定义8位字符变量和字符串,请使用:CHAR char PCHAR
详细定义:
1)6种8位字符串指针: (注:N和L表示near和long,指的是16位WINDOWS种两种大小不同的指标,在Win32中near和long指标没有区别)
typedef CHAR *PCHAR, *LPCH, *PCH, *NPSTR, *LPSTR, *PSTR;
2)4种const 8位字符串指针:
typedef COSNT CHAR *LPCCH, *PCCH, *LPCSTR, *PCSTR;
明确定义16位字符变量和字符串,请使用:WCHAR wchar_t PWCHAR L
详细定义:
1)6种16位字符串指针:
typedef WCHAR *PWCHAR, *PWCH, *LPWCH, *NWPSTR, *LPWSTR, *PWSTR;
2)4种const 16位字符串指针
typedef CONST WCHAR *LPCWCH, *PCWCH, *LPCWSTR, *PCWSTR;
如果对于8位还是16位取决于UNICODE标识符的定义字符变量和字符串,请使用:TCHAR PTCHAR _T(x) __T(x) TEXT(x) _TEXT(x)
详细定义:
1)6种字符串指针:
typedef TCHAR *PTCHAR, *PTCH, *PTSTR, *LPTCHAR, *LPTSTR, *NTPSTR;
2)4种字符串指针:
typedef CONST TCHAR *PCTCH, *PCTSTR, *LPCTCH, *LPCTSTR;
4. (测试环境:VC++6.0) char类型 wchar_t类型
类型大小(32位系统) 8位 16位
常量字符表示法 'A' L'A'或'A'
常量字符串表示法 'hello' L'hello'
一些使用方法 char c='A'; wchar_t wc='A';
(c的值:0x41) (wc的值:0x0041)
char* p='hello'; wchar_t* pw=L"hello";
sizeof sizeof("hello")=6 sizeof(L"hello")=12
计算长度 strlen("hello")=5 wcslen(L"hello)=5
5 使用函数区别:
ANSI UNICODE 均可
printf wprintf _tprintf
strlen wcslen _tcslen
strcpy wcscpy _tcscpy(LPTSTR, LPCTSTR); CString可以转化成LPCTSTR,该方法在CString中实现
6. CString类的方法:
1) CString::Find
int Find(TCHAR ch) const;
int Find(LPTCHAR lptchar) const;
int Find(TCHAR ch, int nStart) const;
int Find(LPTCHAR lptchar, int nStart) const;
返回值:
返回此CString对象中与需要的子字符串或字符匹配的第一个字符的从零开始的索引;如果没有找到子字符串或字符则返回-1。
参数:
ch: 要搜索的单个字符。
lptchar: 要搜索的子字符串。
nStart: 字符串中开始搜索的字符的索引,如果是0,则是从头开始搜索。如果nStart不是0,则位于nStart处的字符不包括在搜索之内。
说明:
此成员函数用来在此字符串中搜索子字符串的第一个匹配的字符。函数的重载可以接收单个字符(类似于运行时函数strchr)和字符串(类似于strstr)。
2) CString::CString
CString();
CString(const CString& str);
CString(TCHAR ch, int nRepeat = 1);
CString(LPCTSTR lpch, int nLength);
CString(const unsigned char* psz);
CString(LPCSTR lpcsz);
CString(LPCWSTR lpwsz);
7. UNICODE字符串转化成ANSIC字符串
1) WideCharToMultiByte()方法
int WideCharToMultiByte (
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar );
参数:
CodePage: Unicode字符转换成的代码页。你可以传递CP_ACP来使用当前的ANSI代码页。代码页是256个字符集。字符0——127与ANSI编码一样。字符128——255与 ANSI字符不同,它可以包含图形字符或者读音符号。每一种语言或地区都有其自己的代码页,所以使用正确的代码页对于正确地显示重音字符很重要。
dwFlags: 确定Windows如何处理“复合” Unicode字符,它是一种后面带读音符号的字符。如è就是一个复合字符。如果这些字符在CodePage参数指定代码页中, 不会出什么事。否则,Windows必须对之进行转换。
传递WC_COMPOSITECHECK使得这个API检查非映射复合字符。
传递WC_SEPCHARS使得Windows将字符分为两段,即字符加读音,如e`。
传递WC_DISCARDNS使得Windows丢弃读音符号。
传递WC_DEFAULTCHAR使得Windows用lpDefaultChar参数中说明的缺省字符替代复合字符。
缺省行为是WC_SEPCHARS。
lpWideCharStr: 要转换的Unicode串。
cchWideChar: lpWideCharStr在Unicode字符中的长度。通常传递-1,表示这个串是以0x00结尾。
lpMultiByteStr: 接受转换的串的字符缓冲
cbMultiByte: lpMultiByteStr的字节大小。
lpDefaultChar: 可选——当dwFlags包含WC_COMPOSITECHECK | WC_DEFAULTCHAR并且某个Unicode字符不能被映射到同等的ANSI串时所传递的一个单字符ANSI串,包含被 插入的“缺省”字符。可以传递NULL,让API使用系统缺省字符(一种写法是一个问号)。
lpUsedDefaultChar:可选——指向BOOL类型的一个指针,设置它来表示是否缺省字符曾被插入ANSI串。可以传递NULL来忽略这个参数。
// 假设已经有了一个Unicode 串 wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, // ANSI 代码页
WC_COMPOSITECHECK, // 检查重音字符
wszSomeString, // 原Unicode 串
-1, // -1 意思是串以0x00结尾
szANSIString, // 目的char字符串
sizeof(szANSIString), // 缓冲大小
NULL, // 肥缺省字符串
NULL ); // 忽略这个参数
调用这个函数后,szANSIString将包含Unicode串的ANSI版本。
2) 常量不能直接转化成变量,
- 关于CString
- 关于CString
- 关于CString
- 关于CString
- 关于CString
- 关于CString
- 关于CString
- 关于CString总结
- 关于CString总结
- 关于Cstring 类
- 关于CString总结(zz)
- 关于CString总结
- 关于CString总结
- 关于CString总结
- 关于CString总结
- 关于CString总结
- 关于CString总结
- 关于CString总结
- Guide to porting from Solaris to Linux on x86
- 修改参数 让Firefox跑得更快
- cult3d的学习和使用
- 8.27
- 看专业乞丐是怎么分析市场的
- 关于CString
- AJAX实例文章教程连载(三)
- AJAX实例文章教程连载(四)
- 如何查看网站的收录与排名
- 用ASP代码得到客户端IP和当前地址
- C# 2.0 套接字编程实例初探
- javascript event 事件解析
- 伦敦8分钟,英国人在BBC上的留言,
- XML语法概述