zoukankan      html  css  js  c++  java
  • CString,int,string,char*之间的转换

    1 CString,int,string,char*之间的转换  


    string 转 CString  
    CString.format("%s", string.c_str());  

    char 转 CString  
    CString.format("%s", char*);  

    char 转 string  
    string s(char *);  

    string 转 char *  
    char *p = string.c_str();  

    CString 转 string  
    string s(CString.GetBuffer());  

     

    1,string -> CString  
    CString.format("%s", string.c_str());  
    用c_str()确实比data()要好.  
    2,char -> string  
    string s(char *);  
    你的只能 初始化,在不是初始化的地方最好还是用assign().  
    3,CString -> string  
    string s(CString.GetBuffer());  
    GetBuffer()后一定 要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.  


    《C++标准函 数库》中说的  
    有三个函数可以将字符串的内容转换为字符数组和C— string  
    1.data(),返回没有”\0“的字符串数组  
    2,c_str(),返回有”\0“的字符串数组  
    3,copy()  


    CString 互转int  

    将字符转换为整数,可以使用atoi、_atoi64或atol。  
    而将数字转换为CString变量,可以使用CString的Format函数。如  
    CString s;  
    int i = 64;  
    s.Format("%d", i)  
    Format函数的功能很强,值得你研究一下。  

    void CStrDlg::OnButton1()  
    {  
    // TODO: Add your control notification handler code here  
    CString  
    ss="1212.12";  
    int temp=atoi(ss);  
    CString aa;  
    aa.Format("%d",temp);  
    AfxMessageBox("var is " + aa);  
    }  

    sart.Format("%s",buf);  

    CString互转char*  

    ///char * TO cstring  
    CString strtest;  
    char * charpoint;  
    charpoint="give string a value";  
    strtest=charpoint;  


    ///cstring TO char *  
    charpoint=strtest.GetBuffer(strtest.GetLength());  

    标准C里没有string,char *==char []==string  

    可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。  


    CString 转换 char[100]  

    char a[100];  
    CString str("aaaaaa");  
    strncpy(a,(LPCTSTR)str,sizeof(a)); 

     
    2 CString类型的转换成int  
    CString类型的转换成int  
    将字符转换为整数,可以使用atoi、_atoi64或atol。  

    //CString aaa = "16" ; 
    //int int_chage = atoi((lpcstr)aaa) ;  


    而将数字转换为 CString变量,可以使用CString的Format函数。如  
    CString s;  
    int i = 64;  
    s.Format("%d", i)  
    Format函数的功能很强,值得你研究一下。  
    如果是使用char数组,也可以使用sprintf函数。

    //CString ss="1212.12";  
    //int temp=atoi(ss);  
    //CString aa;  
    //aa.Format("%d",temp);  


    数字-> 字符串除了用CString::Format,还有FormatV、sprintf和不需要借助于Afx的itoa  

    3 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);  

    4 CString,int,string,char*之间的转换  
    string aa("aaa"); 
    char *c=aa.c_str();


    cannot convert from 'const char *' to 'char *' 
    const char *c=aa.c_str();  

    5 CString,int,string,char*之间的转 换  
    string.c_str()只能转换成const char *, 
    要转成char *这样写:

    string mngName; 
    char t[200]; memset(t,0,200); strcpy(t,mngName.c_str()); 

  • 相关阅读:
    dotnet core 获取 MacAddress 地址方法
    dotnet core 获取 MacAddress 地址方法
    dotnet core 发布只带必要的依赖文件
    dotnet core 发布只带必要的依赖文件
    Developing Universal Windows Apps 开发UWA应用 问答
    Developing Universal Windows Apps 开发UWA应用 问答
    cmd 如何跨驱动器移动文件夹
    cmd 如何跨驱动器移动文件夹
    C++ 驱动开发 error LNK2019
    C++ 驱动开发 error LNK2019
  • 原文地址:https://www.cnblogs.com/tt_mc/p/1674268.html
Copyright © 2011-2022 走看看