zoukankan      html  css  js  c++  java
  • 【VS开发】CString 转为 char *方法大全

    【VS开发】CString 转为 char *方法大全

    标签(空格分隔): 【VS开发】


    方法1:

    CString strTemp;
    char szTemp[128];
    
    strTemp = _T("abckdkfei");
    memset( szTemp, 0, sizeof(szTemp) );
    strcpy( szTemp, strTemp.GetBuffer(strTemp.GetLength()));
    

    方法2:

    char * pchar;
    CString str="hello";
    pchar=(LPSTR)(LPCSTR)str;
    

    方法3:

    char szTemp[500];
    CString strTemp = "123456789";
    memset(szTemp,0,sizeof(szTemp));
    sprintf(szTemp,"%s",strTemp);
    

    方法4:

    CString strBuf="awefasdf";
    char pBuff[100];
    memset(pBuff,0x00,100);
    memcpy(pBuff,(LPCSTR)strBuf,strBuf.GetAllocLength());
    

    方法5:

    CString strBuf="awefasdf";
    char *pBuff=strBuf.GetBuffer(0);
    

    如果以上方法都不可行,且转完之后拷贝只有第一个字符,那么恭喜你,因为大概你的工程是基于UNICODE的,直接进行强制转换肯定不行,你需要使用下面的方法进行:

    方法6:
    可以用API:WideCharToMultiByte进行转换

    方法7:

    #include <afxpriv.h>
    CString strTest = _T("abcd");
    USES_CONVERSION;
    LPSTR lpszTest = T2A(strTest);
    

    注意事项:

    直接转换在基于MBCS的工程可以,而在基于UNICODE的工程是不行的,CString会以UNICODE的形式来保存数据,强制类型转换只会返回第一个字符

    【科普】:
    可以参考一下http://blog.csdn.net/liu4584945/article/details/6191370


    2015-11-14 调试总结 张朋艺

  • 相关阅读:
    C++中头文件包含的问题
    linux环境变量
    win32进程和线程
    断言
    win32中的常用类型转换
    可变形参
    #define
    CString与char*互相转化
    extern
    手机CPU和GPU厂商
  • 原文地址:https://www.cnblogs.com/huty/p/8518938.html
Copyright © 2011-2022 走看看