Håller fortfarande på med att skriva C++ i .NET mot ett API utanför .NET, och nu har jag råkat på nästa problem. Även här så tror jag att jag har en lösning, men den är långtifrån snygg. Måste gå att göra det bättre.
Försöker omvandla en System::String till char[256] (det är APIet som skall matas med den senare). Lyckas inte "casta" hur jag än försöker, så jag har fått ta till en nödlösning där jag loopar igenom strängen bokstav för bokstav och skriver den till min char[].
Såhär kunde jag göra med C++ MFC:
mniiFile.fileName : char[256]
mstrFileName : CString
strcpy(mniiFile.fileName, mstrFileName);
Men i managed C++ har jag inte hittat någon bra lösning.
mniiFile.fileName : char[256]
mstrFileName : System::String
char* pChars = (char*)Marshal::StringToHGlobalAnsi(mstrFileName).ToPointer();
int i = 0;
while (((*(pChars + i)) != 0) && (i < 255))
{
mniiFile.fileName[i] = *(pChars + i);
i++;
}
mniiFile.fileName[i] = 0;
Marshal::FreeHGlobal(pChars);
(Har inte testkört den än, så den kan mycket väl vara helt uppåt väggarna).