Gå til innhold

Anbefalte innlegg

Skrevet (endret)

Hei var inne på en eller annen side og så på et forum at en eller annen sa at det er bede å bruke string enn char, isåfall hvorfor det og kan noen forklare meg det med string litt nermere(forskjeller og sån)?

 

 

Setter pris på alle svar :thumbs::p

mvh Zirener.

Edit:Var nok av leifer her azz

Endret av zirener
Videoannonse
Annonse
Skrevet

Char[] er bare en rekke med 8-bits tegn, siste i rekken er 0x0 eller '\0'. String er en klasse hvis jeg ikke tar feil (er ingen ekspert selv), derfor har hver string mange innebygde funksjoner som f.eks sting.length() string.insert( posisjon, string) og string.erase( posisjon, antallTegn), disse medlems-funksjonene er veldig enkle å bruke.

Stringobjekter har ikke nullterminerings-tegn '\0' på slutten.

Skrevet

std::string (som det antagligvis er snakk om) er en veldig bra løsning. du slipper å bry deg om å på forhånd sette av plass til X antall bokstaver da klassen gjør det for deg. den har også innebygde funksjoner for de mest vanlige streng-operasjoner.

 

Eksempel på å legge tegn i en streng:

- C streng / char:

 

char streng[1024]; //legg merke til at man må definere størrelsen på forhånd
strcpy(streng, "tekst");

 

- std::string:

 

string streng = "tekst"; //forhåndsdefinerer ikke størrelsen på forhånd og trenger ikke strcpy

 

Eksempel på å LEGGE TIL tekst i en eksisterende streng:

- C streng / char

 

char streng[1024]; //samme som i stad
strcpy(streng, "tekst"); //samme som i stad
strcat(streng, "tekst2");

 

- std::string:

 

string streng = "tekst";
streng += "tekst2"; //MYE lettere

 

evt

 

streng = streng + "tekst2";

 

 

 

Ulempene er selvfølgelig at mye biblioteker (som f.eks. winapi) ikke støtter std::string

Skrevet
...og da har man member function c_str()  ;)

jepp den er fin, MEN den virker ikke så bra hvis du kommer til en funksjon som krever peker/referanse til en c streng.

 

 

Selv bruker jeg std::string så ofte jeg kan, og i det situasjoner den ikke kan brukes lager jeg en wrapper som gjør at jeg kan bruke den :)

Skrevet

void funk1(char* c); // noen funksjoner tar slike c-strenger..

void funk2(char const* c); // ..andre tar slike ..

 

string s;

funk1(s.c_str());

funk2(const_cast<char*>(s.c_str()));

Skrevet
...og da har man member function c_str()  ;)

jepp den er fin, MEN den virker ikke så bra hvis du kommer til en funksjon som krever peker/referanse til en c streng.

 

 

Selv bruker jeg std::string så ofte jeg kan, og i det situasjoner den ikke kan brukes lager jeg en wrapper som gjør at jeg kan bruke den :)

Hva mener du med C streng?(Ser ikke at boka mi tar for seg noe string, så jeg kan ikke en dritt om det, kun det jeg har lest på nettet)

Skrevet (endret)
Stringer er også veldig enkle å resize eller fjerne visse elementer i, pga member functions.

Hva mener du egentlig med det??

EDIT:Oi der var det en hefitig leif

Edit2: Var vist ikke værre enn å tenke litt selv :p

Endret av zirener

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...