如何将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();
发布于 2013-06-04 17:38:07
它们是直接兼容的。您可以将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,Single vs float,double vs Double。加上他们未签约的品种。编译器会将它们视为别名,因为它们具有完全相同的二进制表示。
但不是字符串或数组,它们是具有与其本机版本完全不匹配的非平凡实现的类。
https://stackoverflow.com/questions/16919565
复制相似问题