zoukankan      html  css  js  c++  java
  • vs2008下几个CString转换char*的问题

    如果你不是unicode环境,
    char* 不是用CString填进去的,应该是这样
    CString szParA;
    CString szParB;
    假设接口是:
    fun(char* ParA, char* parB);
    那么应该写作:
    fun(szParA.GetBuffer(0), szParB.GetBuffer(0);
    
    如果是unciode的编译环境
    CString szParA;
    CString szParB;
    
    假设接口是:
    fun(char* ParA, char* parB);
    
    那么需要先转换为多字节字符串,然后才可以作为参数填写进去:
    如果是wchar_t转换为char接口的可以用这个函数:
    BOOL MyWideChar_tToMultiByte(LPTSTR lpcwszStr, LPSTR lpOut,INT nOutSize)
    {
        DWORD dwMinSize = 0;
        dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
    
        if(dwMinSize > nOutSize)
        {
            return FALSE;
        }
        else
        {
            WideCharToMultiByte(CP_OEMCP,NULL,lpInt,-1,lpOut,nOutSize,NULL,FALSE);
            return TRUE;
        }
    }
    
    所以两个参数需要这么转化:
    char bufA[512];//多申请点,免得溢出
    char bufB[512];
    
    MyWideChar_tToMultiByte(szParA.GetBuffer(0), bufA, sizeof(bufA));
    MyWideChar_tToMultiByte(szParB.GetBuffer(0), bufB, sizeof(bufB));
    
    经过转换后,就可以作为char*类的替代品bufA、bufB作为参数填写进去了,如下:
    fun(bufA, bufB);
    

  • 相关阅读:
    Java的家庭记账本程序(K)
    构建之法阅读笔记01
    Java的家庭记账本程序(J)
    iOS-CALayer实现简单进度条
    iOS-CALayer
    iOS-CAEmitterLayer(粒子效果)
    iOS-OpenGLES 简单渲染
    iOS-CoreImage简单使用
    iOS富文本-NSAttributedString简单封装
    iOS后台运行
  • 原文地址:https://www.cnblogs.com/jinsedemaitian/p/5589179.html
Copyright © 2011-2022 走看看