zoukankan      html  css  js  c++  java
  • MFC/C++/C中字符类型CString, int, string, char*之间的转换

    原文地址:http://blog.minidx.com/2009/03/03/2209.html

    项目中经常用到各种不同的语言的朋友们应该会比较有这样的体会:一种开发语言用了比较长的时间,突然间转到另外一种语言的话,不管是数据类型或者语法结构,多多少少都会有那么一点不适应。哪怕MFC中的类型与标准C++也是一样的。下面是MFC/C++/C中字符类型CString, int, string, char*之间的转换的说明与举例,经常用的东西,相信对于用C/C++的朋友,还是比较有用的。


    1. 1 CString,int,string,char*之间的转换 
    2. string 转 CString 
    3. CString.format("%s"string.c_str())
    4.  
    5. char 转 CString 
    6. CString.format("%s"char*)
    7.  
    8. char 转 string 
    9. string s(char *)
    10.  
    11. string 转 char * 
    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( pstr256 );
    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());

  • 相关阅读:
    Atitit 趋势管理之道 attilax著
    Atitit 循环处理的新特性 for...else...
    Atitit 2017年的技术趋势与未来的大技术趋势
    atitit 用什么样的维度看问题.docx 如何了解 看待xxx
    atitit prj mnrs 项目中的几种经理角色.docx
    Atitit IT办公场所以及度假村以及网点以及租房点建设之道 attilax总结
    Atitit 工具选型的因素与方法 attilax总结
    Atitit.团队文化建设影响组织的的一些原理 法则 定理 效应 p826.v4
    Atiitt 管理方面的误区总结 attilax总结
    Atitit 未来趋势把控的书籍 attilax总结 v3
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2129562.html
Copyright © 2011-2022 走看看