Z tego co tu widze uzywasz wynalazku zwanego C++/CLI a nie C++. OK, chcesz skonwertowac Stringa (nie myslic z std::string) do char*, pytanie czemu to ma sluzyc?
Bo wiesz, jest taki problem, ze tekst moze byc kodowany na rozne sposoby i czasem na jeden znak przypada wiecej niz jeden bajt. Zdaje sie, ze String z C++/CLI przechowuje znaki w taki wlasnie sposob. Dlatego jezeli chcesz wykonywac jakies dzialania na tekscie (a nie na suchych bajtach) to proponuje zrezygnowac z tablicy charow i wykorzystac tablice wcharow. W innym przypadku, daj znac do czego to potrzebujesz.
Konwersje ze stringa do wcharow mozesz zrealizowac w nastepujacy sposob:
String^ str = "xyz";
cli::array<wchar_t, 1>^ cliArray = str->ToCharArray();
wchar_t* wcharArray = new wchar_t[cliArray->GetLength(0)+1];
for (int i=0; i < cliArray->GetLength(0); ++i) {
wcharArray[i] = cliArray[i];
}
wcharArray[cliArray->GetLength(0)] = '\0';
delete [] wcharArray;
Pisalem troche na szybko, mysle ze da sie to zrobic troche lepiej ale na chwile obecna bedziesz musial zadowolic sie tym co mam.
BTW: po co meczysz sie z C++/CLI? Skoro piszesz na platforme .NET to nie lepiej robic to po ludzku w C#?