1

C++/CLI 関数から .NET 関数に UTF-16 文字を渡すにはどうすればよいですか? 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

現在これを使用して変換していますが、テストするとヌル文字しか取得できません。charUnicode char コードを.NETの同等のコードに適切に変換するにはどうすればよいですか?

#pragma managed

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

1 に答える 1

2

それらは直接互換性があります。Char を wchar_t に割り当てることができます。また、キャストせずにその逆を行うと、コンパイラはいかなる種類の変換関数呼び出しも発行しません。これは、Boolean と bool、SByte と char、Byte と unsigned char、Int16 と short、Int32 と int または long、Int64 と long long、Single と float、Double と double など、C++/CLI の多くの単純な値の型に当てはまります。さらに、署名されていない品種。バイナリ表現がまったく同じであるため、コンパイラはそれらをエイリアスとして扱います。

しかし、文字列や配列ではなく、ネイティブ バージョンとはまったく一致しない重要な実装を持つクラスです。

于 2013-06-04T17:38:07.467 に答える