字符串处理是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条 】