int to char*/char[]
方法:
int num=0;
char temp[64];
sprintf(temp, "%d",num);
或
int number = 123456;
char string[25];
itoa(number, string, 10); //10 转换数字的基数(进制)10就是
说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型
char* to string
方法:
char temp[64];
string str1(temp);
你的只能初始化或赋值,在不是初始化的地方最好还是用assign().
string &assign(const char *s);用c类型字符串s赋值
或
char temp[64];
string str1;
str1=temp;
int to string
用int to char*/char[]和char* to string结合。
string to char*
方法:
char c[20];
string s="1234";
strcpy(c,s.c_str());
最好不用下面方法
string str;
char* temp;
temp=filename.c_str()
//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
string to int
方法:
string source = "1412";
int result = 0;
// 使用Convert.ToInt32(string value);
result = Convert.ToInt32(source);
// 使用Int32.Parse(string value);
result = Int32.Parse(source);
// 使用Int32.TryParse(string s, out int result);
Int32.TryParse(source, out result);
以上三者不同之处:
http://blog.csdn.net/clever_yang/archive/2009/03/20/400800
5.aspx
①Cstring to float
Cstring strtemp=”11.22”;
float m_drundistance=atof(StrTemp); //把strtemp 转化为浮点型
错误提示:
.cpp(815): error C2664: 'atof' : cannot convert parameter 1 from 'CString' to 'const char *'
原因:double atof(const char *nptr);
解决分析: CString 转化成 char* 之一:使用CString对象的GetBuffer方法,于是乎m_drundistance = atof(StrTemp.GetBuffer(0));又出现错误:
cpp(815): error C2664: 'atof' : cannot convert parameter 1 from 'wchar_t *' to 'const char *'
说明以上方法行不通,因此使用
方法一、LPCTSTR强制转化(虽然建议不用)
m_drundistance = atof((char*)LPCTSTR(StrTemp));
测试成功,经过测试并无数据丢失。
方法二、使用USES_CONVERSION宏,不过这个宏不能使用在大的循环体和大的函数中,因为其分配的内存在函数结束的时候才能释放,所以存在堆栈溢出的问题。
USES_CONVERSION
m_drundistance = atof(T2A(StrTemp));
方法三、可先把cstring类型转换到 char* 然后再给atof。(这种方法可行性好)
char Str[1024];
cstring str2;
WideCharToMultiByte(CP_ACP,0,str2,-1,Str,1024,NULL,NULL);
float ff = atof(Str);
②Cstring to int
//将ID由CString转换成int
CString tempField1;
int ruleID = _tstoi(tempField1);
//将ID由char 转换到int
char tempField1[10];
ruleID=atoi(tempField1);
③CString to char*
方法一、WideCharToMultiByte()函数
Cstring str2;
char Str[1024];
WideCharToMultiByte(CP_ACP,0,str2,-1,Str,1024,NULL,NULL);
方法二、T2A()
USES_CONVERSION
Char * str= T2A(StrTemp);
方法三、强制转换
Char* str=(char*)LPCTSTR(StrTemp);
④char * 、int、 float等类型转换到cstring
此类转换就比较容易,可通过format或sprintf等格式转换下即可。
例: int k=10;
Cstring strtype;
StrType.Format(_T("%d",ê?k));
char* ch;
CString str;
ch=(LPSTR)(LPCTSTR)str;
str="good!";
sprintf(ch,"%s",(LPTSTR)(LPCTSTR)str);
4. 安全性
CString > string > char*;
5. 灵活性
CString > string >char*;
6. 可移植性
char* = string > CString;