MFC/C++/C中字符类型CString, int, string, char*之间的转换

来源:互联网 发布:手机录像软件推荐 编辑:程序博客网 时间:2024/05/22 05:30
 

转自:http://blog.minidx.com/2009/03/03/2209.html

  1. 1 CString,int,string,char*之间的转换 

  2. stringCString 

  3. CString.format("%s", string.c_str())

  4.  

  5. charCString 

  6. CString.format("%s", char*)

  7.  

  8. charstring 

  9. string s(char *)

  10.  

  11. stringchar

  12. char *p = string.c_str()

  13.  

  14.  //  CString转std::string

  15.  CString str = dlg.GetPathName();

  16.  setlocale(LC_ALL, "chs");

  17.  char *p = new char[256];

  18.  wcstombs( p, str, 256 );

  19.  m_fileName = p;

  20.  

  21. 1string -> CString 

  22. CString.format("%s", string.c_str())

  23. c_str()确实比data()要好. 

  24. 2char -> string 

  25. string s(char *)

  26. 你的只能初始化,在不是初始化的地方最好还是用assign()

  27. 3,CString -> string 

  28. string s(CString.GetBuffer())

  29. GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. 

  30.  

  31.  

  32. C++标准函数库》中说的 

  33. 有三个函数可以将字符串的内容转换为字符数组和Cstring 

  34. 1.data(),返回没有”/0“的字符串数组 

  35. 2,c_str(),返回有”/0“的字符串数组 

  36. 3copy() 

  37.  

  38.  

  39. CString互转int 

  40.  

  41. 将字符转换为整数,可以使用atoi_atoi64atol。 

  42. 而将数字转换为CString变量,可以使用CStringFormat函数。如 

  43. CString s

  44. int i = 64

  45. s.Format("%d", i) 

  46. Format函数的功能很强,值得你研究一下。 

  47.  

  48. void CStrDlg::OnButton1() 

  49. { 

  50. // TODO: Add your control notification handler code here 

  51. CString 

  52. ss="1212.12"

  53. int temp=atoi(ss)

  54. CString aa

  55. aa.Format("%d",temp)

  56. AfxMessageBox("var is " + aa)

  57. } 

  58.  

  59. sart.Format("%s",buf)

  60.  

  61. CString互转char

  62.  

  63. ///char * TO cstring 

  64. CString strtest

  65. char * charpoint

  66. charpoint="give string a value"

  67. strtest=charpoint

  68.  

  69.  

  70. ///cstring TO char * 

  71. charpoint=strtest.GetBuffer(strtest.GetLength())

  72.  

  73. 标准C里没有string,char *==char []==string 

  74.  

  75. 可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTRCString就可以了。 

  76.  

  77.  

  78. CString转换 char[100] 

  79.  

  80. char a[100]

  81. CString str("aaaaaa")

  82. strncpy(a,(LPCTSTR)str,sizeof(a))

  83. 2 CString类型的转换成int 

  84. CString类型的转换成int 

  85. 将字符转换为整数,可以使用atoi_atoi64atol。 

  86.  

  87. //CString aaa = "16" ;

  88. //int int_chage = atoi((lpcstr)aaa) ; 

  89.  

  90.  

  91. 而将数字转换为CString变量,可以使用CStringFormat函数。如 

  92. CString s

  93. int i = 64

  94. s.Format("%d", i) 

  95. Format函数的功能很强,值得你研究一下。 

  96. 如果是使用char数组,也可以使用sprintf函数。

  97.  

  98. //CString ss="1212.12"; 

  99. //int temp=atoi(ss); 

  100. //CString aa; 

  101. //aa.Format("%d",temp); 

  102.  

  103.  

  104. 数字->字符串除了用CString::Format,还有FormatVsprintf和不需要借助于Afxitoa 

  105.  

  106. 3 char* 在装int 

  107. #include <stdlib.h>

  108.  

  109. int atoi(const char *nptr);

  110. long atol(const char *nptr);

  111. long long atoll(const char *nptr);

  112. long long atoq(const char *nptr)

  113.  

  114. 4 CString,int,string,char*之间的转换 

  115. string aa("aaa");

  116. char *c=aa.c_str();

  117.  

  118.  

  119. cannot convert from 'const char *' to 'char *'

  120. const char *c=aa.c_str()

  121.  

  122. 5 CString,int,string,char*之间的转换 

  123. string.c_str()只能转换成const char *,

  124. 要转成char *这样写:

  125.  

  126. string mngName

  127. char t[200]; memset(t,0,200); strcpy(t,mngName.c_str());

原创粉丝点击