Я хочу преобразовать в std :: string в System :: String ^ в среде Visual C ++. Я знаю, что мы можем преобразовать System :: String в std :: string с помощью функции MarshalString
, как показано ниже:
void MarshalString ( String ^ s, string& os ) {
using namespace Runtime::InteropServices;
const char* chars =
(const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
}
Я не могу найти способ преобразования std :: string в System :: String, но я обнаружил, что System :: String имеет конструктор с аргументом, как показано ниже:
System::String(Char* value, Int32 startIndex, Int32 length)
и я пытаюсь использовать код, как показано ниже, но он не может дать мне правильное решение:
std::string str1 = "MyString";
System::String^ str = new System::String(str1.c_str(), 0, str1.length());
Что случилось с моим кодом?