[英]Pass a UTF character from C++/CLI to C#
如何將UTF-16字符從C ++ / CLI函數傳遞給.NET函數? 我在C ++ / CLI端使用什么類型,以及如何轉換它?
我目前已如下定義C ++ / CLI函數:
wchar_t GetCurrentTrackID(); // 'wchar_t' is the C++ unicode char equivalent to .NET's 'char'?
.NET包裝器定義為:
System::Char GetCurrentTrackID(); // here, 'char' means UTF-16 char
我目前正在使用它進行轉換,但是在測試時,我只會得到一個空字符。 如何將Unicode字符代碼正確轉換為.NET的等價char
?
#pragma managed
return (System::Char)player->GetCurrentTrackID();
它們是直接兼容的。 您可以將Char分配給wchar_t,反之亦然,無需強制轉換,編譯器將不會發出任何類型的轉換函數調用。 這對於C ++ / CLI中的許多簡單值類型都是正確的,例如Boolean vs bool,SByte vs char,Byte vs unsigned char,Int16 vs short,Int32 vs int或long,Int64 vs long long,Single vs float,Double vs double。 加上他們未簽名的品種。 編譯器會將它們視為別名,因為它們具有完全相同的二進制表示形式。
但是不是字符串或數組,它們是具有非平凡實現的類,這些實現根本與它們的本機版本不匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.