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

本文主要借鉴了文章:string,CString,char*之间的转化,并在该文的基础上进行整理。有兴趣的朋友可以看一下原文。
- string,CString,char*之间的转化

  • int

    • int 转 CString
      CString.Format(“%d”,int);

    • int 转 char *
      在stdlib.h中有个函数itoa()
      itoa的用法:
      itoa(i,num,10);
      i 需要转换成字符的数字
      num 转换后保存字符的变量
      10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型
      原形:char itoa(int value, char string, int radix);
      实例:<#include "stdlib.h"
      <#include "stdio.h"
      main()
      {
      int i=1234;
      char s[5];
      itoa(i,s,10);
      printf("%s",s);
      getchar();
      }

    • int转String
      方法一:
      stringstream ss;
      int n = 123;
      string str;
      ss<<n;
      ss>>str;


      方法二:同int转char,只是后面加了一步。
      char *_itoa( int value, char *string, int radix );

      char buffer[20];
      int  i = 3445;   
     _itoa( i, buffer, 10 );
      string s(buffer);
  • String

    • string 转 CString
      CString.format(“%s”, string.c_str());
      用c_str()确实比data()要好.

    • string 转 char
      代码
      char *p = string.c_str();
      string aa("aaa");
      char *c=aa.c_str();
      string mngName;
      char t[200];
      memset(t,0,200);
      strcpy(t,mngName.c_str());


    • string 转 int
      方法借鉴string转char 和 char转int,即可。
      str = "456";
      int n = atoi(str.c_str());


  • char

    • char* 转 CString
      方法一: CString.format(“%s”, char*);
      方法二:
      CString strtest;
      char * charpoint;
      charpoint="give string a value";
      strtest=charpoint; //直接赋值

    • char* 转 int
      #include <stdlib.h>
      int atoi(const char *nptr);
      long atol(const char *nptr);
      long long atoll(const char *nptr);
      long long atoq(const char *nptr);


    • char* 转 string

      string s(char *); 
      //只能初始化,在不是初始化的地方最好还是用assign().
      string s1( "Mississippi" ); char *s3;
      // 拷贝s1 的前4 个字符
      s3.assign( s1, 0, 4 );
  • CString

    • CString 转 int
      CString ss=”1212.12”;
      int temp=atoi(ss); //atoi _atoi64或atol
      将字符转换为整数,可以使用atoi、_atoi64或atol。
      int int_chage = atoi((lpcstr)ss) ;
      或:
      CString str = "23";
      UINT uint;
      sscanf(str, "%d", uint);


    • CString 转 string

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


    • CString 转char

      CString cstr;
      char *p = (LPSTR)(LPCTSTR)cstr;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值