职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1146|回复: 0

vc字符串与字符串指针的操作

[复制链接]
愚人 发表于 2012-2-15 16:33 | 显示全部楼层 |阅读模式
  在vc中字符串分为两种,一种是宽字符,一种是窄字符。编码分别对应unicode和ansi。所以在开发当中要注意这两种字符的相互转换。下面是vc中常用的字符串指针。

fcbbb151d8e6e5d88c5430b4.jpg

  LPCWSTR 对应 const wchar_t*
  LPCSTR 对应 const char*
  LPWSTR 对应 wchar_t*
  LPSTR 对应 char*
  mfc自带CString类,一般可以实现字符串指针想字符串中进行转换。但是转换后会自动变成unicode格式。具体转换为
  CString str=(CString)各种字符串指针;
  由于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;//用完要释放空间
  还可以这样表示
  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);//转换
  宽转窄:(同理)
  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);
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 08:36 , Processed in 0.139065 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表