• VC 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());
  • 相关阅读:
    Pyhon基础过滤字符串中的字母数字特殊符号
    [编程题] 斐波那契数列
    左旋转字符串(Java)-循环Index方式
    [编程题]字符流中第一个不重复的字符
    6525. 【2020.4.1模拟】Valleys
    6515. 【GDOI2020模拟03.28】数一数(one)
    6516. 【GDOI2020模拟03.28】数二数(two)
    6508. 【GDOI2020模拟03.11】我的朋友们
    6494. 【GDOI2020模拟03.08】勘探
    6491. 【GDOI2020模拟03.04】铺路
  • 原文地址:https://www.cnblogs.com/ganmk/p/1520438.html
Copyright © 2020-2023  润新知