VC编程CString、int、string、char*相互转换

2012-02-12 13:32:38|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, 字符处理|来源:唯设编程网

字符串处理是VC编程非常重要的一部分内容,在实际项目中,字符串之间的类型转换比较繁杂,本文搜集了目前使用最多的字符串与字符串、字符串与数值类型之间的转换方法,主要包含了CString、int、string、char*相互转换,总结归纳如下:

一、字符类型之间相互转换:

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

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

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

3.char* 转 string


string s(char *);

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

4.string 转 char *
char *p = string.c_str(); 

5.CString 转 string


string s(CString.GetBuffer());

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

6.CString互转char*
//char * TO cstring
CString strtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint;

///cstring TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());

标准C语言里没有string类型,char *==char []==string
可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。
 

7.CString转换 char[100]
char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a)); 

8.string转换成char*


 

string.c_str()只能转换成const char *,
要转成char *这样写:

string mngName;
char t[200];
memset(t,0,200);
strcpy(t,mngName.c_str());

二、字符类型与数值类型转换:

多节字符模式下,将字符类型char*转换为数值类型,可以使用atoi、_atoi64、atof、atol,在宽字符模式下,将字符类型wchar_t*转换为数值类型,可以使用_wtoi,_wtoi64、_wtof、_wtol,下述不做特别说明,均指的是在多节模式下工作,需要在宽字符(Unicode)模式下进行转换,请参考http://msdn.microsoft.com/en-US/library/ts4a5f28%28v=vs.80%29.aspx

1.将数值类型转换为CString类型:


 

可以使用CString的Format函数。如 :

    ct2 = clock();
    CString s;
    int i = 64;
    s.Format("%d", i)

Format函数的功能很强,值得你研究一下。

void CStrDlg::OnButton1()
{
    // TODO: Add your control notification handler code here
    CString
        ss="1212.12";
    int temp=atoi(ss);
    CString aa;
    aa.Format("%d",temp);
    AfxMessageBox("var is " + aa);
}

如果是使用char数组,也可以使用sprintf函数。

数字->字符串除了用CString::Format,还有FormatV、sprintf和不需要借助于Afx的itoa

2.CString、string类型的转换成数值类型


将字符类型转换成数值类型的API函数:atoi、_atoi64或atol等,均值提供对char*的转换,所以对于CString,可以先通过CString::GetBuffer函数返回对应的char*或者强制转换成LPCSTR,string类型可以通过函数c_str()间接地完成对应数值类型的转换,下面着重讨论char*转换成数值类型的方法。

<12>
发表评论0条 】
网友评论(共?条评论)..
VC编程CString、int、string、char*相互转换