首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++Builder 字串類型轉換速查表:AnsiString、WideString、BSTR 互轉

     編輯:關於C++

C++Builder 字串類型轉換快速參考

在 C++Builder 開發中,常需在 AnsiString、WideString、BSTR、char*、wchar_t* 之間進行轉換。以下整理最常用的轉換語法,供開發時快速查閱。

AnsiString 與 char* 互轉

// AnsiString -> char*
const char* cstr = ansiStr.c_str();

// char* -> AnsiString
AnsiString ansiStr = AnsiString(cstr);

BSTR 與 char* 互轉

// BSTR -> char*
char* cstr = AnsiString(bstr).c_str();

AnsiString 與 wchar_t* 互轉

// wchar_t* -> AnsiString
AnsiString ansiStr = AnsiString(wstr);

// AnsiString -> wchar_t*
wchar_t* wstr = ansiStr.WideChar();

WideString 與 char*/wchar_t* 互轉

// char* -> WideString
char* s = "adsfdsf";
wchar_t* p = WideString(s).BSTR();

// wchar_t* -> WideString
wchar_t* p = L"sdsfdfsf";
char* s = AnsiString(p).c_str();

char* 與 wchar_t* 直接互轉(透過 AnsiString 中介)

// char* -> wchar_t*
AnsiString con = c;
wchar_t* cc = con.WideChar(cc, con.WideCharBufSize());

// wchar_t* -> char*
AnsiString con = wstr;
char* cc = con.c_str();

WideString 複製到 wchar_t 緩衝區

WideString a = L"abc";
wchar_t* b = new wchar_t[4];
wcscpy(b, a);  // 直接複製內容

WideString 指派給 AnsiString(自動窄化)

WideString wsNote;
// wsNote = ...;
AnsiString sNote = wsNote;  // 隱含轉換

開發提醒

  • 記憶體管理:使用 new 配置的緩衝區需自行 delete[] 釋放
  • 編碼一致性:專案若設為 Unicode,優先使用 UnicodeString(C++Builder 2009+)
  • BSTR 釋放:透過 WideString::BSTR() 取得的 BSTR 需呼叫 SysFreeString 釋放
  • 效能考量:頻繁轉換會產生暫時物件,熱點路徑建議直接操作底層緩衝區
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved