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

 
  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 ( p , str , 256 ) ;
  19.   m_fileName = p ;
  20.  
  21. 1 string -> CString  
  22. CString . format ( " %s " , string . c_str ())
  23. c_str () 确实比 data () 要好. 
  24. 2 char -> string  
  25. string   s ( char * )
  26. 你的只能初始化,在不是初始化的地方最好还是用 assign ()
  27. 3 , CString -> string  
  28. string   s ( CString . GetBuffer ())
  29. GetBuffer () 后一定要 ReleaseBuffer () ,否则就没有释放缓冲区所占的空间. 
  30.  
  31.  
  32. C ++标准函数库》中说的 
  33. 有三个函数可以将字符串的内容转换为字符数组和 C string  
  34. 1 . data () ,返回没有”/ 0 “的字符串数组 
  35. 2 , c_str () ,返回有”/ 0 “的字符串数组 
  36. 3 copy ()  
  37.  
  38.  
  39. CString 互 转 int  
  40.  
  41. 将字符转换为整数,可以使用 atoi _atoi64 atol 。 
  42. 而将数字转换为 CString 变量,可以使用 CString Format 函数。如 
  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 *,用操作符( LPCSTR CString 就可以了。 
  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 _atoi64 atol 。 
  86.  
  87. //CString aaa = "16" ;
  88. //int int_chage = atoi((lpcstr)aaa) ; 
  89.  
  90.  
  91. 而将数字转换为 CString 变量,可以使用 CString Format 函数。如 
  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 ,还有 FormatV sprintf 和不需要借助于 Afx itoa  
  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 ()) ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值