vc字符串与字符串指针的操作
在vc中字符串分为两种,一种是宽字符,一种是窄字符。编码分别对应unicode和ansi。所以在开发当中要注意这两种字符的相互转换。下面是vc中常用的字符串指针。
步骤/方法
- 01
LPCWSTR 对应 const wchar_t* LPCSTR 对应 const char* LPWSTR 对应 wchar_t* LPSTR 对应 char* mfc自带CString类,一般可以实现字符串指针想字符串中进行转换。但是转换后会自动变成unicode格式。具体转换为 CString str=(CString)各种字符串指针;
- 02
由于CString字符串是宽字符的所以我们算字符长度的时候分为两种,一种是按照宽字符算,一种是按照窄字符算。 宽字符: str.GetLength(); 窄字符: (str.GetLength()+1)*sizeof(wchar_t); 下面是声明一个动态数组 int wlen=GetLength(); wchar_t* bff=new wchar_t[wlen]; char* abff=new char[len]; 下面是将CString的字符串转换成指针 宽字符 wcscpy(bff,arg.GetBuffer()); 窄字符 char *buf; CString str= L"test "; buf = (LPSTR)(LPCTSTR)str; 指针转换成数组 char str[256]; strcpy(str, lpstr); delete[] lpstr;//用完要释放空间
- 03
还可以这样表示 char* str="sample"; int len = strlen(str)+1; char copystr[256]; memcpy(copystr,str,len); 宽窄字符的相互转换就需要用到两个函数,一个是MultiByteToWideChar(窄转宽),一个是WideCharToMultiByte (宽转窄)下面是简单的实例 窄转宽: DWORD dwMinSize; dwMinSize=::MultiByteToWideChar(CP_ACP,0,lpstr,-1,NULL,0); //获取转换后字符的长度。 LPWSTR lpwStr=new WCHAR[dwMinSize];//声明动态数组 ::MultiByteToWideChar(CP_ACP,0,lpstr,-1,lpwStr,dwMinSize);//转换
- 04
宽转窄:(同理) DWORD dwNum; dwNum= WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE); LPSTR psText = new char[dwNum]; WideCharToMultiByte (CP_OEMCP,NULL,lpcwszStr,-1,psText,dwNum,NULL,FALSE); CString 字符串操作。 拼接 CString str=str1+str2; 转换指针 CString str("graycat"); LPCTSTR p = s; 字符串比较 if(s1.Compare( s2 ) == -1){} 字符串查找 if(s.Find( "de" ) == 3){} 判断字符串是否为空 if(S.IsEmpty()) 字符串替换 str.replace(newstr,oldstr); str.replace(newlpcstr,oldlpcstr);