std::string MarshalString(System::String ^str){
if(str == nullptr || str->Length == 0) return std::string("");
using namespace System::Runtime::InteropServices;
array<unsigned char>^ encodedBytes = System::Text::Encoding::UTF8->GetBytes(str);
pin_ptr<unsigned char> pinnedBytes = &encodedBytes[0];
return std::string(reinterpret_cast<const char*>(pinnedBytes));
}
c3RkOjpzdHJpbmcgTWFyc2hhbFN0cmluZyhTeXN0ZW06OlN0cmluZyBec3RyKXsKCWlmKHN0ciA9PSBudWxscHRyIHx8IHN0ci0+TGVuZ3RoID09IDApIHJldHVybiBzdGQ6OnN0cmluZygiIik7Cgl1c2luZyBuYW1lc3BhY2UgU3lzdGVtOjpSdW50aW1lOjpJbnRlcm9wU2VydmljZXM7CglhcnJheTx1bnNpZ25lZCBjaGFyPl4gZW5jb2RlZEJ5dGVzID0gU3lzdGVtOjpUZXh0OjpFbmNvZGluZzo6VVRGOC0+R2V0Qnl0ZXMoc3RyKTsKCXBpbl9wdHI8dW5zaWduZWQgY2hhcj4gcGlubmVkQnl0ZXMgPSAmZW5jb2RlZEJ5dGVzWzBdOwoJcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBpbm5lZEJ5dGVzKSk7Cn0=