• 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());
     
     
     
    UpdateData(TRUE)
    //比如CEDIT 控件连接的变量叫m_strEditString;
    if (m_strEditString.GetLength()>=500)
    {
    MessageBox(_T("长度不够"_,_T(""),MB_ICONSTOP)//ERROR
    }
    else
    {
    strcpy(st,m_strEditString.GetBuffer(0));
    }
    //以下是转换
    1、CString::GetBuffer(0);//取得CString的char*
    2、int intv=atoi(CString::GetBuffer(0));//CString to Int
    3、float floatv=(float)atof(CString::GetBuffer(0));//CString to float
    4、long longvv=atol(CString::GetBuffer(0));//CString to Long
    5、double doublev=atof(CString::GetBuffer(0));//CString to Double
    6、CString::Format(_T("%d,%f,%ld,%lf,%c,%s"),int,float,long,double,char,char*)//各类型到CString
  • 相关阅读:
    解决中文环境下zabbix监控图形注释乱码
    SSIS CDC(Change Data Capture)组件在数据库中启用报错。 The error returned was 14234: 'The specified '@server' is invalid
    Tableau 群集部署
    访问Tableau自带的PostgreSQL数据库
    [译]Stairway to Integration Services Level 18 – 部署和执行
    [译]Stairway to Integration Services Level 16 – Flexible Source Locations (多文件导入)
    [译]Stairway to Integration Services Level 15 – SSIS 参数回顾
    [译]Stairway to Integration Services Level 14
    [译]Stairway to Integration Services Level 13
    [译]Stairway to Integration Services Level 12
  • 原文地址:https://www.cnblogs.com/zhihaowang/p/10128745.html
Copyright © 2020-2023  润新知