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);
错误提示:
.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
测试成功,经过测试并无数据丢失。
方法二、使用USES_CONVERSION宏,不过这个宏不能使用在大的循环体和大的函数中,因为其分配的内存在函数结束的时候才能释放,所以存在堆栈溢出的问题。
USES_CONVERSION
m_drundistance
方法三、可先把cstring类型转换到 char* 然后再给atof。(这种方法可行性好)
cstring str2;
②Cstring to int
//将ID由CString转换成int
//将ID由char 转换到int
③CString to char*
方法一、WideCharToMultiByte()函数
Cstring str2;
方法二、T2A()
④char * 、int、 float等类型转换到cstring
此类转换就比较容易,可通过format或sprintf等格式转换下即可。
例:
4. 安全性
5. 灵活性
CString > string >char*;
6. 可移植性