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

  1. 1 CString,int,string,char*之间的转换
  2. stringCString
  3. CString.format("%s", string.c_str());
  4. charCString
  5. CString.format("%s", char*);
  6. charstring
  7. string s(char *);
  8. stringchar *
  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. 1string -> CString
  17. CString.format("%s", string.c_str());
  18. c_str()确实比data()要好.
  19. 2char -> string
  20. string s(char *);
  21. 你的只能初始化,在不是初始化的地方最好还是用assign().
  22. 3,CString -> string
  23. string s(CString.GetBuffer());
  24. GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
  25. C++标准函数库》中说的
  26. 有三个函数可以将字符串的内容转换为字符数组和Cstring
  27. 1.data(),返回没有”/0“的字符串数组
  28. 2,c_str(),返回有”/0“的字符串数组
  29. 3copy()
  30. CString互转int
  31. 将字符转换为整数,可以使用atoi_atoi64atol
  32. 而将数字转换为CString变量,可以使用CStringFormat函数。如
  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 *,用操作符(LPCSTRCString就可以了。
  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_atoi64atol
  65. //CString aaa = "16" ;
  66. //int int_chage = atoi((lpcstr)aaa) ;
  67. 而将数字转换为CString变量,可以使用CStringFormat函数。如
  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,还有FormatVsprintf和不需要借助于Afxitoa
  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());

-----------------------------------------------------------------------------
参考:http://blog.minidx.com/2009/03/03/2209.html

另注:
c++中引入string类型,一般需要加入这样的语句
#include <string>
using namespace std;

#include <iostream.h>跟#include <iostream>是不同的,前者是C++没有引进name space之前用的,在标准C++引入name sapce之后,就变成了后者。而且标准C++不提倡还用旧的文件头形式。引入name space之后,所有的C++库函数都包括在std里面。如果你不写using namespace std;也可以的,不过你每次用到C++库函数都需要加上std::,例如:std::cout << "Hello!";,为了免去麻烦,所以用using namespace std;如果你不想把整个std空间作为缺省空间,你可以个别的声明,例如:using std::cout;以后用到cout就不用再加上std::了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值