String^ とのやり取りが一番の問題。
ASCIIコードへの変換自体はEncoding^でだが、using namespace System::Text; String^ unicodeString = "test" array^unicodeBytes = unicode->GetBytes( unicodeString ); array^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes ); array^asciiChars = gcnew array(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length )); ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 );
ASCIIコードをString^にするほうは、 array^asciiChars = gcnew array(1); int i = 'B'; asciiChars[0] = i; String^ asciiString = gcnew String( asciiChars ); ↑ここが肝でgcnewでインスタンスを作成して渡さないと例の「System::StringがSystem::String^に変換できません」が出る。 arrayにして渡さないとやはり変換できないが、arrayにしとけば配列数も自動取得。もっとも配列数より短い文字列の場合は\0で止めないとね。
そんで頑張ると、MFC依存は無くなるけど.NET Frameworkには依存する(w |