您的位置:首页 > 其它

int char* string …

2018-02-23 17:16 519 查看
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;

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: