您的位置:首页 > 其它

CString,int,string,char*之间的转换

2012-09-27 21:55 363 查看
《C++标准函数库》中说的

有三个函数可以将字符串的内容转换为字符数组和C—string

1.data(),返回没有”\0“的字符串数组

2,c_str(),返回有”\0“的字符串数组

3,copy()

.................................................................

int 转 CString:

CString.Format("%d",int);

...............................

string 转 CString

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

用c_str()确实比data()要好.

.......................................

char* 转 CString

CString.format("%s", char*);

CString strtest;

char * charpoint;

charpoint="give string a value";

strtest=charpoint; //直接付值

...................................................................

CString 转 int

CString ss="1212.12";

int temp=atoi(ss); //atoi _atoi64或atol



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

int int_chage = atoi((lpcstr)ss) ;

或:

CString str = "23";

UINT uint;

sscanf(str, "%d", uint);

..............................

string 转 int

..............................

char* 转 int

#include <stdlib.h>



int atoi(const char *nptr);

long atol(const char *nptr);

long long atoll(const char *nptr);

long long atoq(const char *nptr);

...................................................................

CString 转 string

string s(CString.GetBuffer());

GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

..........................................

int 转 string

..........................................

char* 转 string

string s(char *);

你的只能初始化,在不是初始化的地方最好还是用assign().

...................................................................

CString 转 char *

CString strtest="wwwwttttttt";

charpoint=strtest.GetBuffer(strtest.GetLength());

CString转换 char[100]

char a[100];

CString str("aaaaaa");

strncpy(a,(LPCTSTR)str,sizeof(a));

CString str="aaa";

char* ch;

ch=(char*)(LPCTSTR)str;

..........................................

int 转 char *

在stdlib.h中有个函数itoa()

itoa的用法:

itoa(i,num,10);

i 需要转换成字符的数字

num 转换后保存字符的变量

10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型

原形:char *itoa(int value, char* string, int radix);

实例:

#include "stdlib.h"

#include "stdio.h"

main()

{

int i=1234;

char s[5];

itoa(i,s,10);

printf("%s",s);

getchar();

}

..........................................

string 转 char *

char *p = string.c_str();

string aa("aaa");

char *c=aa.c_str();

string mngName;

char t[200];

memset(t,0,200);

strcpy(t,mngName.c_str());

...................................................................

标准C里没有string,char *==char []==string

可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操

作符(LPCSTR)CString就可以了。

cannot convert from 'const char *' to 'char *'

const char *c=aa.c_str();

string.c_str()只能转换成const char *

String,CString,TCHAR,char之间区别和联系
2008-07-25 19:53
char是类型

TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是

char还是w_char;
TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t.

至于String,CString他们都是一种封装了字串处理的操作!

你可以打开他们的源代码找寻究竟!

CString属于VC的类库

string是标准C++的类库

string.h是C的库函数。

研究它们的源代好些!
TCHAR,char是可以同整型互换的类型。

String,CString代表了一块内存区域。
TCHAR 赋值
#include <tchar.h>
TCHAR szWindowText[256]=_T("QQ2006");
char*、TCHAR*转换CString

CString str(****)

下面详细写一下其它转换

//////////////////////////////

/*

***********************************************************************

* 函数: TransCStringToTCHAR

* 描述:将CString 转换为 TCHAR*

* 日期:

***********************************************************************

*/

TCHAR* CPublic::CString2TCHAR(CString &str)

{

int iLen = str.GetLength();

TCHAR* szRs = new TCHAR[iLen];

lstrcpy(szRs, str.GetBuffer(iLen));

str.ReleaseBuffer();

return szRs;

}

/*

***********************************************************************

* 函数: THCAR2Char

* 描述:将TCHAR* 转换为 char*

* 日期:
***********************************************************************

*/

char* CPublic::THCAR2char(TCHAR* tchStr)

{

int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度

char* chRtn = new char[iLen+1]

wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值

return chRtn;

}

/*

***********************************************************************

* 函数: CString2char

* 描述:将CString转换为 char*

* 日期:

***********************************************************************

*/

char* CPublic::CString2char(CString &str)

{

int len = str.GetLength();

char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度

memset(chRtn, 0, 2*len+1);

USES_CONVERSION;

strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));

return chRtn;

}

//参考

///////////////////////

//Pocket PC上的UNICODE和ANSI字符串

//By Vassili Philippov, September 26, 2001.

//杨方思歧 译

////////////////////////

/*

***********************************************************************

* 函 数 名:GetAnsiString

* 描 述:将CString(unicode)转换为char*(ANSI)

* 参 数:CString &s 要转换的CString

* 返 回 值:返回转换结果

* 创建日期:
* 最后修改:

***********************************************************************

*/

char* GetAnsiString(const CString &s)

{

int nSize = 2*s.GetLength();

char *pAnsiString = new char[nSize+1];

wcstombs(pAnsiString, s, nSize+1);

return pAnsiString;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: