簡體   English   中英

從C ++ / CLI向C#傳遞UTF字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM