作法:將System::String 轉換為wchar_t* 或char* | Microsoft Docs

文章推薦指數: 80 %
投票人數:10人

本文內容. 範例; 另請參閱. 您可以在Vcclr 中使用 PtrToStringChars ,以轉換String 成原生 wchar_t * 或 char * 。

這一律會傳回寬Unicode 字串 ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 語言 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 目錄 作法:將System::String轉換為wchar_t*或char* 發行項 05/02/2022 8位參與者 本文內容 您可以在Vcclr中使用PtrToStringChars,以轉換String成原生wchar_t*或char*。

這一律會傳回寬Unicode字串指標,因為CLR字串是在內部的Unicode。

然後,您可以從寬轉換,如下列範例所示。

範例 //convert_string_to_wchar.cpp //compilewith:/clr #include #include #include usingnamespaceSystem; intmain(){ String^str="Hello"; //PinmemorysoGCcan'tmoveitwhilenativefunctioniscalled pin_ptrwch=PtrToStringChars(str); printf_s("%S\n",wch); //Conversiontochar*: //Canjustconvertwchar_t*tochar*usingoneofthe //conversionfunctionssuchas: //WideCharToMultiByte() //wcstombs_s() //...etc size_tconvertedChars=0; size_tsizeInBytes=((str->Length+1)*2); errno_terr=0; char*ch=(char*)malloc(sizeInBytes); err=wcstombs_s(&convertedChars, ch,sizeInBytes, wch,sizeInBytes); if(err!=0) printf_s("wcstombs_sfailed!\n"); printf_s("%s\n",ch); } Hello Hello 另請參閱 使用c++Interop(隱含PInvoke) 本文內容



請為這篇文章評分?