VS2010 char* String CString转换

 

(一) 概述
  string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;
  CString(typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicode均可);
  char*为C编程中最常用的字符串指针,一般以’\0’为结束标志;
  (二) 构造
  string是方便的,可以从几乎所有的字符串构造而来,包括CString和char*;
  CString次之,可以从基本的一些字符串变量构造而来,包括char*等;
  char*没有构造函数,仅可以赋值;
  举例:
  char* psz = “joise”;
  CString cstr( psz );
  string str( cstr );
  (三) 运算符重载
  a) operator=
   string是最方便的,几乎可以直接用所有的字符串赋值,包括CString和char*;
  CString次之,可以直接用些基本的字符串赋值,包括char*等;
  char*只能由指针赋值,并且是极危险的操作,建议使用strcpy或者memcpy,而且char*在声明的时候如未赋初值建议先设为NULL

 1、string 转 CString
       CString.format("%s", string.c_str());
2、char * 转 CString
      CString.format("%s", char*);
3、char * 转 string
    string s(char *);
4、string 转 char *
     char *p = string.c_str();
5、CString 转 string
      string s(CString.GetBuffer(CString.GetLength()));
6、CString 转 char *
       charpoint=strtest.GetBuffer(strtest.GetLength());
      不建议用(LPCTSTR)进行强制类型转化,这样strtest大小发生变化时会出现错误。
7、CString 转 char[100]
      char a[100];
      CString str("aaaaaa");
      strncpy(a,(LPCTSTR)str,sizeof(a));


无法从“const char  *”转换为“char  *”

bool filename_sort(const FileNode &fn1, const FileNode &fn2)
{
 char *fname1 = strrchr(fn1.filename, '\\');
 char *fname2 = strrchr(fn2.filename, '\\');
 return (strcmp(fname1, fname2) < 0);
}

char *fname1 = strrchr(const_cast<char*>(fn1.filename), '\\');
char *fname2 = strrchr(const_cast<char*>(fn2.filename), '\\');

使用const_cast转换一下就好了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值