在 C++Builder 開發中,常需在 AnsiString、WideString、BSTR、char*、wchar_t* 之間進行轉換。以下整理最常用的轉換語法,供開發時快速查閱。
// AnsiString -> char*
const char* cstr = ansiStr.c_str();
// char* -> AnsiString
AnsiString ansiStr = AnsiString(cstr);
// BSTR -> char*
char* cstr = AnsiString(bstr).c_str();
// wchar_t* -> AnsiString
AnsiString ansiStr = AnsiString(wstr);
// AnsiString -> wchar_t*
wchar_t* wstr = ansiStr.WideChar();
// 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 con = c;
wchar_t* cc = con.WideChar(cc, con.WideCharBufSize());
// wchar_t* -> char*
AnsiString con = wstr;
char* cc = con.c_str();
WideString a = L"abc";
wchar_t* b = new wchar_t[4];
wcscpy(b, a); // 直接複製內容
WideString wsNote;
// wsNote = ...;
AnsiString sNote = wsNote; // 隱含轉換
new 配置的緩衝區需自行 delete[] 釋放UnicodeString(C++Builder 2009+)WideString::BSTR() 取得的 BSTR 需呼叫 SysFreeString 釋放