Ukratko.
String koji boravi na GC (manged) heapu funkcijom StringToHGlobalAnsi() prebacis na nativni heap u raw ANSI formatu (C string, ako ti je ovako blize). Ona vraca pokazivac na taj niz.
Konstruktoru za std::string prosljedis taj char pointer i tim dobijes samostalni, recimo C++, string.
Na kraju oslobodis memoriju sa FreeCoTaskMem() koju je StringToHGlobalAnsi() zauzeo na nativnom heapu (moras se sam pobrinit za ovo, mozda cak i ne moras, ali moram poviriti u dokumentaciju).
Pozdrav.