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

  1. 1 CString,int,string,char*之间的转换
  2. string 转 CString
  3. CString.format("%s", string.c_str());
  4. char 转 CString
  5. CString.format("%s", char*);
  6. char 转 string
  7. string s(char *);
  8. string 转 char *
  9. char *p = string.c_str();
  10. //  CString转std::string
  11. CString str = dlg.GetPathName();
  12. setlocale(LC_ALL, "chs");
  13. char *p = new char[256];
  14. wcstombs( p, str, 256 );
  15. m_fileName = p;
  16. 1,string -> CString
  17. CString.format("%s", string.c_str());
  18. 用c_str()确实比data()要好.
  19. 2,char -> string
  20. string s(char *);
  21. 你的只能初始化,在不是初始化的地方最好还是用assign().
  22. 3,CString -> string
  23. string s(CString.GetBuffer());
  24. GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
  25. 《C++标准函数库》中说的
  26. 有三个函数可以将字符串的内容转换为字符数组和C—string
  27. 1.data(),返回没有”\0“的字符串数组
  28. 2,c_str(),返回有”\0“的字符串数组
  29. 3,copy()
  30. CString互转int
  31. 将字符转换为整数,可以使用atoi、_atoi64或atol。
  32. 而将数字转换为CString变量,可以使用CString的Format函数。如
  33. CString s;
  34. int i = 64;
  35. s.Format("%d", i)
  36. Format函数的功能很强,值得你研究一下。
  37. void CStrDlg::OnButton1()
  38. {
  39. // TODO: Add your control notification handler code here
  40. CString
  41. ss="1212.12";
  42. int temp=atoi(ss);
  43. CString aa;
  44. aa.Format("%d",temp);
  45. AfxMessageBox("var is " + aa);
  46. }
  47. sart.Format("%s",buf);
  48. CString互转char*
  49. ///char * TO cstring
  50. CString strtest;
  51. char * charpoint;
  52. charpoint="give string a value";
  53. strtest=charpoint;
  54. ///cstring TO char *
  55. charpoint=strtest.GetBuffer(strtest.GetLength());
  56. 标准C里没有string,char *==char []==string
  57. 可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char*,用操作符(LPCSTR)CString就可以了。
  58. CString转换 char[100]
  59. char a[100];
  60. CString str("aaaaaa");
  61. strncpy(a,(LPCTSTR)str,sizeof(a));
  62. 2 CString类型的转换成int
  63. CString类型的转换成int
  64. 将字符转换为整数,可以使用atoi、_atoi64或atol。
  65. //CString aaa = "16" ;
  66. //int int_chage = atoi((lpcstr)aaa) ;
  67. 而将数字转换为CString变量,可以使用CString的Format函数。如
  68. CString s;
  69. int i = 64;
  70. s.Format("%d", i)
  71. Format函数的功能很强,值得你研究一下。
  72. 如果是使用char数组,也可以使用sprintf函数。
  73. //CString ss="1212.12";
  74. //int temp=atoi(ss);
  75. //CString aa;
  76. //aa.Format("%d",temp);
  77. 数字->字符串除了用CString::Format,还有FormatV、sprintf和不需要借助于Afx的itoa
  78. 3 char* 在装int
  79. #include <stdlib.h>
  80. int atoi(const char *nptr);
  81. long atol(const char *nptr);
  82. long long atoll(const char *nptr);
  83. long long atoq(const char *nptr);
  84. 4 CString,int,string,char*之间的转换
  85. string aa("aaa");
  86. char *c=aa.c_str();
  87. cannot convert from 'const char *' to 'char *'
  88. const char *c=aa.c_str();
  89. 5 CString,int,string,char*之间的转换
  90. string.c_str()只能转换成const char *,
  91. 要转成char *这样写:
  92. string mngName;
  93. char t[200]; memset(t,0,200); strcpy(t,mngName.c_str());
posted @ 2010-01-13 12:37  真功夫  阅读(1796)  评论(0编辑  收藏  举报