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 调试总结 张朋艺

  • 相关阅读:
    nodepad++中的正则表达式匹配和替换操作。
    QT Creator配置环境和安装
    圣诞树小程序的制作
    C#编辑xml文件
    delegate里的Invoke和BeginInvoke
    记录RFID操作错误
    关于Panel隐藏横向滚动条
    随笔
    Java图形打印 上下对称三角星
    Centos 7.5安装 Redis 5.0.0
  • 原文地址:https://www.cnblogs.com/huty/p/8518938.html
Copyright © 2011-2022 走看看