zoukankan      html  css  js  c++  java
  • 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();

    }

  • 相关阅读:
    鼠标拖拽窗口效果(不允许拖出屏幕的可视区域)
    react-context
    上下固定,中间自适应布局
    左右固定,中间自适应布局
    leetcode每日一题(2020-07-03):108. 将有序数组转换为二叉搜索树
    leetcode每日一题(2020-07-02):378. 有序矩阵中第K小的元素
    leetcode每日一题(2020-07-01):718. 最长重复子数组
    leetcode每日一题(2020-06-30):剑指 Offer 09. 用两个栈实现队列
    leetcode每日一题(2020-06-29):215. 数组中的第K个最大元素
    leetcode每日一题(2020-06-28):209. 长度最小的子数组
  • 原文地址:https://www.cnblogs.com/GoodGoodWorkDayDayUp/p/1877655.html
Copyright © 2011-2022 走看看