Mitenkä saisi muutettua stringin chariksi.
char szText[255]; string strString="Tässä stringi"; strcpy(szText, strString.c_str());
Kooderin koodi ei toimi mikäli stringi on yli 254 merkkiä. Muutenkin se varaa turhaan muistia jos se on vaan pari merkkiä. Parempi olis jotenkin tällaiseen tyyliin:
// string foostring = jotain... char* footext = new char[foostring.length() + 1]; // 1 nollatavulle strcpy(footext, foostring.c_str());
Ainiin, tais olla tällanenki:
char* footext = strdup(foostring.c_str());
Ja muistetaan sitten vapautella footext deletellä kun ei enää käytetä.
Tai sitten voi käyttää ihan vain sitä c_str-jäsenfunktiota, jos vain pitää saada kyseinen teksti jollekin funktiolle parametriksi annettua.
printf("Teksti C:n tapaan: '%s'\n", teksti.c_str());
sooda kirjoitti:
char* footext = strdup(foostring.c_str());Ja muistetaan sitten vapautella footext deletellä kun ei enää käytetä.
Toi strdup
ei kuulu perus-C:hen eikä -C++:aan. Ja se vapauttelu pitää sitten tehdä free
:llä eikä deletellä.
Väittäisin, että tuolla Metabolixin mallilla pärjäilee aika hyvin. Naked pointtereiden ja taulukkovarausten kanssa tulee tosi helposti virheitä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.