• MFC中char*,string和CString之间的转换


    MFC中char*,string和CString之间的转换

    一、    将CString类转换成char*(LPSTR)类型

    方法一,使用强制转换。例如: 
    CString theString( "This  is a test" ); 
    LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; 
    方法二,使用strcpy。例如: 
    CString theString( "This  is a test" ); 
    LPTSTR lpsz = new TCHAR[theString.GetLength()+1]; 
    _tcscpy(lpsz, theString); 
    方法三,使用CString::GetBuffer。例如: 
    CString s(_T("This is a  test ")); 
    LPTSTR p = s.GetBuffer(); 
    // 在这里添加使用p的代码 
    if(p != NULL) *p =  _T(''); 
    s.ReleaseBuffer(); 
    // 使用完后及时释放,以便能使用其它的CString成员函数

    CString str = "ABCDEF"; 
    char *pBuf = str,GetBuffer( 0 ); 
    str.ReleaseBuffer();

    二、     string转char*

    string 是c++标准库里面其中一个,封装了对字符串的操作
    把string转换为char* 有3种方法:
    1。data(),返回没有”“的字符串数组 
    如:
    string str="abc";
    char  *p=str.data();
    2.c_str 返回有”“的字符串数组 
    如:string  str="gdfd";
        char *p=str.c_str();
    3 copy
    比如
    string  str="hello";
    char p[40];
    str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
    *(p+5)='';  //要手动加上结束符
    cout < < p;

    三、     字符串string转换为其它数据类型

    temp="123456";
    1)短整型(int)
    i =  atoi(temp);
    2)长整型(long)
    l =  atol(temp);
    3)浮点(double)
    d =  atof(temp);
    string s; d= atof(s.c_str());
    4)BSTR变量
    BSTR bstrValue =  ::SysAllocString(L"程序员");
    ...///完成对bstrValue的使用
    SysFreeString(bstrValue);
    5)CComBSTR变量
    CComBSTR类型变量可以直接赋值
    CComBSTR  bstrVar1("test");
    CComBSTR bstrVar2(temp);
    6)_bstr_t变量
    _bstr_t类型的变量可以直接赋值
    _bstr_t  bstrVar1("test");
    _bstr_t bstrVar2(temp);

    四、     Char*转换为string

    如果要把一个char 转换成string, 可以使用 string s(char  *); 

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

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

    七、     CString -> string 

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

    八、CString互转int

    将字符转换为整数,可以使用atoi、_atoi64或atol。  
    而将数字转换为CString变量,可以使用CString的Format函数。如  
    CString s;  
    int i =  64;  
    s.Format("%d", i) 

  • 相关阅读:
    高斯消元算法
    Fermat小定理的证明
    Pollard Rho 算法简介
    做一些无聊的题
    永远不要相信自己的傲慢
    笔记-数据结构进阶
    笔记-区间问题
    线段树板子
    [DarkBZOJ3694] 最短路
    [CF321D] Ciel and Flipboard
  • 原文地址:https://www.cnblogs.com/wangyaning/p/4237007.html
Copyright © 2020-2023  润新知