• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            醬壇子

            專注C++技術(shù) 在這里寫下自己的學(xué)習(xí)心得 感悟 和大家討論 共同進步(歡迎批評!!!)

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

            公告

            王一偉 湖南商學(xué)院畢業(yè) 電子信息工程專業(yè)

            常用鏈接

            留言簿(19)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 387045
            • 排名 - 64

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            常用字符串件的類型轉(zhuǎn)換。
             
            From
            To
            Sample
            字符串常量
            BSTR
            Right:
            BSTR bs = ::SysAllocString(_T("Test string"));
            ::SysFreeString();
            Wrong:
            BSTR bs = _T("Test string"); //ERROR
            LPWSTR /
            LPCWSTR /
            WCHAR* /
            wchar_t
            BSTR
            Right:
            LPCTSTR sz1 = _T("Test String");
            BSTR bs = ::SysAllocString(sz1);
            ::SysFreeString();
             
            Wrong:
            LPTSTR sz1 = _T("Test String");
            BSTR bs = sz1; //ERROR
            BSTR
            LPCWSTR /
            const WCHAR * /
            const wchar_t *
            Right:
            BSTR bs = ...; //
            ...
            LPCTSTR sz = static_cast<LPCTSTR>bs;
            ...
            ::SysFreeString(bs);
            //Never use sz after this line
             
            Wrong:
            BSTR bs = ...; //
            ...
             
            LPCTSTR sz = bs;
            ...
            ::SysFreeString(bs);
            //Never use sz after this line
            _tcslen(sz); //ERROR
             
            BSTR
            LPWSTR /
            WCHAR* /
            wchar_t*
            Right:
            BSTR bs = ...; //
            //...
            UINT len = ::SysStringLen(bs);
             
            // Do not modify the BSTR content by
            // C/C++ string functions
            LPTSTR sz = new TCHAR[len+1];
            _tcsncpy(sz, bs, len);
            ::SysFreeString(bs);
             
            delete []sz;
            Wrong:
            BSTR bs = ...; //
            //...
             
            // Do not modify the BSTR content by
            // C/C++ string functions
            LPTSTR sz = bs; //Error
             
            CString
            BSTR
            Right:
             
            CString str1 = ...;
             
            BSTR bs = str1.AllocSysString();
            SomeMethod(bs);
            // void SomeMethod([in]BSTR)
            ::SysFreeString(bs);
             
            CComBSTR bs1(static_cast<LPCTSTR>(str1));
            SomeMethod(static_cast<BSTR> (bs1) );
             
            // void SomeMethod([in] BSTR )
            _bstr_t bs2( static_cast<LPCTSTR>(str1));
            SomeMethod(static_cast<BSTR> (bs2) );
             
            Wrong:
            CString str1 = ...;
             
            SomeMethod(str1.AllocSysString());
             
            // No one will releasee the return BSTR of
            // str1.AllocSysString()
             
            BSTR
            CString
            Right:
             
            BSTR bs = SysAllocString(_T(“Test”));
            CString str1(bs);
            CString str2;
            Str2 = bs;
            SysFreeString(bs); // Never forget this line
            char* / LPSTR / LPCSTR
            BSTR
            Right:
            Solution 1
            char str[MAX_STR_LEN] = "ANSI string";
            WCHAR wstr[MAX_WSTR_LEN];
            // Convert ANSI to Unicode
             
            MultiByteToWideChar( CP_ACP, 0, str,
                    strlen(str)+1, wstr,  
                 sizeof(wstr)/sizeof(wstr[0]) );
             
            BSTR bs1 = ::SysAllocString(wstr);
             
            CString cs = str;
            BSTR bs2 = cs.AllocSysString()
             
            Solution 2
            char str[MAX_STR_LEN] = "ANSI string";
            _bstr_t bs1(str);
            CComBSTR bs2(str);
             
            Wrong:
            char *str = "ANSI string";
            BSTR bstr1 = SysAllocString(
                        (const OLECHAR*) str);
            BSTR
            char* / LPSTR / LPCSTR
            Right:
            Solution 1
            char str[MAX_STR_LEN];
            BSTR bs = ::SysAllocString(L"Test");
            // Convert ANSI to Unicode
            WideCharToMultiByte( CP_ACP, 0,
               (LPCWSTR)bs, -1,
               str, MAX_STR_LEN, NULL, NULL );
            ::SysFreeString(bs);
             
            Solution 2
            BSTR bs = ::SysAllocString(L"Test");
            _bstr_t bs1(bs, false);
            const char* str = static_cast <const char*> bs1;
             
            Wrong:
            BSTR bstr1 = SysAllocString(L”ANSI string");
            char *str = (char*) bstr1;    
             
            IMPORTANT: 上面所有的例子都是按照UNICODE應(yīng)用程序設(shè)計的。并且不考慮BSTR中包含多個字串的情況,也就是BSTR只在結(jié)束的位置有一個0結(jié)束符。對于MBCS/ANSI程序,可以參考上面的例子。主要區(qū)別是對于現(xiàn)在的COM版本OLECHARwchar_t,但是TCHAR 對于UNICODE程序才是wchar_t
             
            posted on 2007-07-17 11:55 @王一偉 閱讀(1462) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久国产亚洲精品| 精品国产乱码久久久久久浪潮| 狠狠干狠狠久久| 久久精品国产亚洲AV麻豆网站| 亚洲中文字幕无码久久2020| 一本一本久久aa综合精品| 思思久久精品在热线热| 亚洲欧美成人久久综合中文网| 久久久久亚洲精品无码网址 | 97久久香蕉国产线看观看| 亚洲午夜无码久久久久| 中文字幕久久久久人妻| 久久久久久午夜成人影院| 久久久久久免费一区二区三区| 日本久久久精品中文字幕| 久久精品这里只有精99品| 无码精品久久一区二区三区| 久久久久亚洲AV无码专区首JN| 亚洲va久久久噜噜噜久久天堂 | 精品熟女少妇AV免费久久| 久久免费的精品国产V∧| 国内精品久久久久影院日本 | 久久精品国产亚洲77777| 久久99精品国产99久久6男男| 国产成人精品久久| 欧美日韩精品久久久久| 69国产成人综合久久精品| 久久人人爽人人爽人人片AV东京热 | 久久99精品久久久大学生| 国产精品无码久久久久久| 国产真实乱对白精彩久久| 国产精品成人久久久| 91精品国产高清久久久久久国产嫩草 | 久久亚洲中文字幕精品一区| 伊人久久大香线蕉av不卡| 久久综合久久综合九色| 久久精品国产久精国产果冻传媒| 蜜桃麻豆www久久| 亚洲欧美日韩中文久久| 一个色综合久久| 国产69精品久久久久9999|