型別轉化LPCTSTR,std string,VT BSTR

2022-03-17 01:55:48 字數 2489 閱讀 5733

1樓:果建翼

1. lpctstr 實際上就是字串,不過是會根據當前的字符集進行自適應:如果是ansi的話,lpctstr = const char* ,如果是unicode的話,lpctstr = const wchar_t*。

其實這是windows下的命名方式,你把它的名字拆開了看就很清晰:lp:長指標,c:

const,t:自適應,str:字串。

類似的還有lpcstr、lpstr、lptstr、lpwstr等等,你按照上面的方法拆開看就很清楚。

2. std::string。

這是c++標準庫中的字串類。是c++語言標準的一部分。提供對字串的封裝。

用起來還算比較方便。它是窄字元型別(char),對應的還有一個寬字元版(wchar_t)的std::wstring類。

3. vt_bstr,vt是variant(變體型別)的縮寫,bstr則是com下的通用字串型別。vt_bstr其實並不是一個型別,它只是一個列舉用於標識當前的variant到底是不是bstr字串。

估計你真正想問的是bstr這個型別。這是com中的通用字串型別。可以跨語言。

它的本質很簡單,首先最前面有一個整數表示整個字串的長度,接下來跟一個字串,它統一為utf-16編碼,一個字元佔兩個位元組(wchar_t型別),字串以\0結尾。 它可以在多個程式和語言中傳遞,而且還可以被放進variant型別的萬能變數中。

第一種lpctstr在windows程式設計中很常見,只是對const char*或const wchar_t*的重定義而已。第二種std::string在c++程式設計中很常見,用於各種字串的處理。

第三種用得較少,主要是在atl專案或者其它涉及到com介面的時候會用到。

轉化:1. lpctstr 轉 std::string:

如上所述,lpctstr實際上是兩種型別之一:在非unicode下是const char*,在unicode下是const wchar_t*。

如果是前者,那麼很簡單:直接賦值就可以了,std::string支援用const char*來構造,所以可以自動轉化:

lpctstr a = "hello!";

std::string b = a;

要反著轉回來也很方便,使用std::string提供的c_str()方法就可以:

std::string a = "hello";

lpctstr b = a.c_str();

但如果lpctstr是後者即const wchar_t*那就麻煩了,因為這涉及到不同字符集之間的編碼轉換。不能直接轉了,必須先得對字串轉編碼才行,比如呼叫win32api下的 multibytetowidechar()和widechartomultibyte()函式。

2. lpctstr轉bstr:

可以使用com中封裝的類ccombstr來代表bstr:

ccombstr a("hello!");

bstr b = a.m_bstr;

也可以使用convertstringtobstr等api。

反向的轉換則可以使用convertbstrtostring。

3. std::string轉bstr:現用c_str()轉成const char*,再用上述方法轉成bstr。

2樓:匿名使用者

lpctstr = const char*std::string = std封裝的stirng類vt_bstr 沒用過不知道

std::string str;

lpctstr lpcstr;

可以這麼轉換

lpcstr = str.c_str();

str = lpcstr;

vs2010裡面,怎麼將cstring 型別轉化為 lpctstr 型別

c++中,不能將引數1從「const char []」轉換為「lpctstr」,如何解決!

3樓:匿名使用者

在專案屬性裡面找到專案預設值下面的字符集, 將其換為:使用多位元組字符集就可以了,執行成功。

4樓:匿名使用者

把引數 1 改為 _t("1") 看看

lpctstr 和const char*型別的轉換

5樓:匿名使用者

lpctstr 在vc2010時預設為寬字元, 即是const wchar_t*

c++從lpctstr轉化到std::string

6樓:篤俠

包含string標頭檔案之後,這樣就可以了吧:

std::string(name)

7樓:匿名使用者

std::string strname =std:: string((char*)name);再試試

8樓:匿名使用者

string strname = string(name);

生物轉化有哪些反應型別,生物轉化的型別有哪些

主要可分為氧化 oxidation 還原 reduction 水解 hydrolysis 與結合 conjugation 等四種反應型別 生物轉化有哪些反應型別?生物轉化指外援化學物在體內經多種酶催化的代謝轉化 是機體對外源化學物處置的重要環節 是機體維持穩態的只要機制 生物轉化有哪些反應型別?主要...

請問什麼是生物轉化法,生物轉化的型別有哪些

1.生物轉化法很廣泛的 主要分為生物轉化法和微生物轉化法 外來化合物在體內經過一系列化學變化並形成其衍生物以及分解產物的過程稱為生物轉化,或稱為代謝轉化。所形成的衍生物即代謝物。外來化合物經過生物轉化,有的可以達到解毒,毒性減低。但有的可使其毒性增強,甚至可產生致畸 致癌效應。所以,不應把代謝轉化只...

怎樣把電腦磁碟型別 FAT32轉化為NTFS格式

在命令提示符視窗中,輸入convert 驅動器碟符 fs ntfs。例如,convert d fs ntfs命令將採用ntfs格式對d驅動器進行格式化。您可以通過這條命令將fat或fat32卷轉換為ntfs格式。很簡單 在xp的磁碟管理當中就有這個選項 fat32轉化為ntfs格式可以帶資料進行轉換...