在VC中CString是常用的字符串处理类:
1:通过GetBuffer(0)可以轻松获取字符串指针;
2:CString是一种自适应的字符串,在非UNICODE中,它是ANSI字符串char*,在UNICODE中它是wchar_t*(当然是通过GetBuffer获取指针);
3:在UNICODE工程中,通常将 char* 字符串转为UNICODE字符串wchar_t*时,可以有多重方法,最简单的就是A2W,这里我们可以用CString完成,
如: char * pch = "ansi字符串";
CString str(pch);
wchar_t * pwch = str.GetBuffer(0); //或者: wchar_t * pwch = str.GetBuffer(str.GetLength() );
4:在UNICODE中,CString 如何转换为ANSI字符串;
当然可以通过W2A等宏实现,也可以通过C语言的转换函数,但是在MFC中,可以用更简单的方法;
在UNICODE中,CString 通过GetBuffer(0)函数或取得是wchar_t * 字符串,而不是char *,转换方法:
CString strUnicode;
CStringA strAnsi( strUnicode );
char * pstrAnsi = strAnsi.GetBuffer(0);
strAnsi.RealeaseBuffer();
5:在Unicode 工程中,获取字符串长度;
CString str(“12345”);
str.GetLenght() == 5;
但是,中文的话:
CString str(“中文”);
str.GetLenght() == 2; //返回结果是2; 但是实际上,一个中文站两个字节; 但是在多字节工程中返回正确结果;
要想获取正确结果,需要转换为多字节,这里讲用复杂的函数,用CString解决;
方法:
CString str(“中文”);
CStringA strA( str ); //转换多字节;
strA.GetLength();