1

如何将 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 字符代码转换char为 .NET 的等效代码?

#pragma managed

return (System::Char)player->GetCurrentTrackID();
4

1 回答 1

2

它们是直接兼容的。您可以将 Char 分配给 wchar_t ,反之则无需强制转换,编译器将不会发出任何类型的转换函数调用。这适用于 C++/CLI 中的许多简单值类型,例如 Boolean vs bool、SByte vs char、Byte vs unsigned char、Int16 vs short、Int32 vs int or long、Int64 vs long long、Single vs float、Double vs double。加上他们未签名的品种。编译器会将它们视为别名,因为它们具有完全相同的二进制表示。

但不是字符串或数组,它们是具有非平凡实现的类,根本不匹配它们的本机版本。

于 2013-06-04T17:38:07.467 回答