• BSTR,_bstr_t,CComBSTR,VARIANT,_variant_t,CString的转换


    VC6.0上编译通过,console程序,使用静态MFC库。也许有不对的地方,欢迎指正

    #include <stdio.h>
    #include <afx.h>
    #include <comdef.h>
    #include <atlbase.h>

    void main()
    {
        BSTR bstrText;
        _bstr_t _bstr_tText;
        CString cstrText;
        LPTSTR pText;
        CComBSTR ccomstrText;
        VARIANT variantText;
        _variant_t _variant_tText;

        //char*转成其他类型
        _bstr_tText = "系统设置";
        bstrText = _com_util::ConvertStringToBSTR("通道设置");
            SysFreeString(bstrText);    //必须释放
        cstrText = "用户管理";
        ccomstrText = "日志管理";
        variantText.vt = VT_BSTR;
        variantText.bstrVal = _com_util::ConvertStringToBSTR("jinan1861");
        _variant_tText = "报警管理";

        //BSTR转成其他类型
        bstrText = _com_util::ConvertStringToBSTR("通道设置");
        cstrText = bstrText;
        _bstr_tText = bstrText;
        ccomstrText = bstrText;
        variantText.vt = VT_BSTR;
        variantText.bstrVal = bstrText;
        _variant_tText = bstrText;
        pText = _com_util::ConvertBSTRToString(bstrText);
        SysFreeString(bstrText);
        delete(pText);                    //需要delete

        //_bstr_t转成其他类型
        _bstr_tText = "系统设置";
        cstrText = (LPCTSTR)_bstr_tText;
        bstrText = (BSTR)_bstr_tText;
        pText = (char*)_bstr_tText;
        ccomstrText = (BSTR)_bstr_tText;
        variantText.vt = VT_BSTR;
        variantText.bstrVal = (BSTR)_bstr_tText;
        _variant_tText = _bstr_tText;

        //Cstring转成其他类型
        cstrText = "日志管理";
        LPCTSTR pText1 = (LPCTSTR)cstrText;
        bstrText = _com_util::ConvertStringToBSTR( (LPCTSTR)cstrText );
        variantText.vt = VT_BSTR;
        variantText.bstrVal = bstrText;
        SysFreeString(bstrText);
        _bstr_tText = cstrText;
        ccomstrText = cstrText;
        _variant_tText = (LPCTSTR)cstrText;

        //ccomstrText转成其他类型
        ccomstrText = "用户管理";
        cstrText = ccomstrText;
        _bstr_tText = ccomstrText;
        bstrText = ccomstrText;
        pText1 = (LPCTSTR)cstrText;
        variantText.vt = VT_BSTR;
        variantText.bstrVal = (BSTR)ccomstrText;
        _variant_tText = (BSTR)ccomstrText;

        //VARIANT转成其他类型
        if (variantText.vt == VT_BSTR)
        {
            //variantText.bstrVal是BSTR类型,参考BSTR的转换方法
        }

        //_variant_t是VARIANT的封装类,
        //构造函数和操作符'='支持VARIANT,_bstr_t和LPTSTR
        //_variant_t转成其他类型
        _variant_tText = "抓图管理";
        _bstr_tText = (_bstr_t)_variant_tText;
        cstrText = (LPCTSTR)_bstr_tText;
        pText1 = (char*)_bstr_tText;
        bstrText = (_bstr_t)_variant_tText;
        _bstr_tText = _variant_tText;
        ccomstrText = (BSTR)_bstr_tText;
        variantText = _variant_tText;

        getchar();

    }

  • 相关阅读:
    mysql1193 HY000,MySQL ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
    MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】
    linux 服务器__MySQL远程连接 ERROR 2003 Can‘t connect to MySQL server (10060) 解决办法
    Linux Mysql8 安装教程
    Linux安装JDK完整步骤
    MySQL导入数据库1118错误解决方案[ERR] 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB
    死磕生菜 lettuce 间歇性发生 RedisCommandTimeoutException 的深层原理及解决方案
    Git: 将TAG推送到Gerrit中的特定分支
    不可不知的 MySQL 升级利器及 5.7 升级到 8.0 的注意事项
    kill 1和 0的区别
  • 原文地址:https://www.cnblogs.com/GoodGoodWorkDayDayUp/p/1877655.html
Copyright © 2020-2023  润新知