CString、string、char*、char[]之间的转换

本文介绍了在MFC和STL中常用的CStirng与string之间的转换方法,包括如何将CString转换为string、char*以及如何将string、char*转换为CString等,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CStirng主要用于MFC的编写,而string属于STL,两者都是符合标准C++的。我现在使用的开发环境vs2005,vs2005默认字符串编码是UNICODE,所以字符串数据前要加上(TEXT)或_T来转换,譬如:CString str = _T("hello world");

 

下面介绍几种字符串数据类型的转换方法:

CString:

1、CString 转 string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

或者一个一个赋值

string CStringToString(CString cstr)
{
 string result(cstr.GetLength(),'e');
 for (int i=0;i<cstr.GetLength();i++)
 {
  result[i]=(char)cstr[i];
 } 
 return result;
}

2、CString 转char* 、char[]

CString转换成char*(LPSTR)类型,常常使用下列三种方法:

方法一,使用强制转换。例如:
 CString theString( (_T("Char test "));
 LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;

方法二,使用strcpy。例如:
 CString theString( (_T("Char test "));
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
strcpy(lpsz, theString);

另外:
CString 转换为char[]
CString转换 char[100]
char a[100];
CString str(”aaaaaa”);
strncpy(a,(LPCTSTR)str,sizeof(a));

需要说明的是,strcpy(或可移值的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char* (ANSI),系统编译器将会自动对其进行转换。

方法三,使用CString::GetBuffer。
如果你需要修改 CString 中的内容,它有一个特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一个可写的缓冲指针。 如果你只是打算修改字符或者截短字符串,例如:
CString s(_T("Char test "));
 LPTSTR p = s.GetBuffer();
 LPTSTR dot = strchr(p, ''.'');
if(p != NULL)
 *p = _T('');
 s.ReleaseBuffer(); // 使用完后及时释放,以便能使用其它的CString成员函数
在 GetBuffer 和 ReleaseBuffer 之间这个范围,一定不能使用你要操作的这个缓冲的 CString 对象的任何方法。因为 ReleaseBuffer 被调用之前,该 CString 对象的完整性得不到保障。

 

string:

1、string 转 CString

CString.format("%s",string.c_str());

或者一个一个赋值 

CString StringToCString(string str)
{
 CString result;
 for (int i=0;i<(int)str.length();i++)
 {
  result+=str[i];
 }
 return result;
}

2、string 转 char*、char[]

char *P = string.c_str();

 

char* 、char[]:

1、char* 转 CString

将char*转换成CString,可以直接赋值如:
CString strtest;
char * charpoint;
charpoint=”give string a value”;
strtest=charpoint;

还可使用CString::Format进行如:

 char chArray[] = "Char  test";
 TCHAR * p = _T("Char  test");( 或LPTSTR p = _T("Char  test");)
 CString theString = chArray;
 theString.Format(_T("%s"), chArray);
 theString = p;

 2、char* 转 string

string s(char *);

 另:CString/string互转int ,float

将字符转换为整数,可以使用atoi、_atoi64或atol。

而将数字转换为string变量,可以用itoa函数。

将数字转换为CString变量,可以使用CString的Format函数如:
CString s;
int i = 64;
s.Format(”%d”, i);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值