Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: muutos string -> char

ping [24.02.2007 11:00:42]

#

Mitenkä saisi muutettua stringin chariksi.

kooderi [24.02.2007 11:32:59]

#

char szText[255];
string strString="Tässä stringi";

strcpy(szText, strString.c_str());

sooda [24.02.2007 12:25:42]

#

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ä.

Metabolix [24.02.2007 23:43:49]

#

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());

koo [25.02.2007 18:53:38]

#

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ä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta