• <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   管理


            国产精品久久久久天天影视| 亚洲国产精品久久久天堂 | 2021久久精品国产99国产精品| 91精品国产乱码久久久久久| 国产精品久久波多野结衣| 久久免费美女视频| 久久精品无码av| av色综合久久天堂av色综合在| 久久精品国产亚洲av麻豆色欲 | 91精品国产色综久久| 久久久久97国产精华液好用吗| 中文字幕无码久久久| 亚洲国产精品高清久久久| 国产精品99久久精品| 久久久久久久久久免免费精品| 狠狠色丁香久久婷婷综合| 国产精品久久99| 久久久国产99久久国产一| 久久99久久99小草精品免视看| 少妇久久久久久被弄到高潮| 久久精品人人槡人妻人人玩AV| 99久久国产综合精品成人影院| 精品国产青草久久久久福利| 好久久免费视频高清| 久久无码高潮喷水| 久久亚洲精品视频| 欧美噜噜久久久XXX| 亚洲Av无码国产情品久久| 久久99精品综合国产首页| 一本久久a久久精品亚洲| 国产成人99久久亚洲综合精品| 久久综合偷偷噜噜噜色| 亚洲乱亚洲乱淫久久| 久久精品国产亚洲精品2020| 尹人香蕉久久99天天拍| 国产精品福利一区二区久久| 久久亚洲中文字幕精品有坂深雪 | 精品国产VA久久久久久久冰| 欧美精品九九99久久在观看| 精品久久久久久国产三级| 国产精品久久99|