2012-02-12 13:32:38|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, 字符处理|来源:唯设编程网
字符串处理是VC编程非常重要的一部分内容,在实际项目中,字符串之间的类型转换比较繁杂,本文搜集了目前使用最多的字符串与字符串、字符串与数值类型之间的转换方法,主要包含了CString、int、string、char*相互转换,总结归纳如下:
CString.format("%s", string.c_str());
用c_str()确实比data()要好.
CString.format("%s", char*);
3.char* 转 string
string s(char *);
你只能初始化,在不是初始化的地方最好还是用assign().
char *p = string.c_str();
5.CString 转 string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
//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就可以了。
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*转换成数值类型的方法。