Normalt kan en programmerer hente lengden av en setning ( eller streng) i noen C + + program ved kall strengens "lengde ( ) "-metoden . Men strenger som implementert i C + + var ikke alltid tilgjengelig, og programmerere ikke har tilgang til ferdige metoder som lengde ( ) . Telle lengden på en streng uten å bruke dette bygget i metoden innebærer forståelse streng, c - stil karakter arrays , og hvordan du kan iterere over dem . C + + Strings og C Strings
I C + + , den innebygde data type " string " representerer setninger , setninger eller ord . Imidlertid representerer strengen datatype faktisk hva programmerere kaller en " c -style" streng. I den opprinnelige C-språk , programmerere lagret setninger som samlinger ( eller arrays) av tegn . Så mens i C + + , ser en setning variabeldeklarasjon som:
string str = "Hei ";
i C , ser den samme erklæringen som:
røye str [ 50 ] = "Hei ";
Hvor " str " representerer et utvalg av 50 tegn. Videre, siden C - stil strenger er rett og slett arrays , de alle ender med en Null avslutning karakter ( "\\ 0 ") som betyr slutten på strengen .
" C_str ( )" Metode
det interessante strenger i C + + er at de er en klasse , og som en klasse inneholder metoder for å gjøre arbeid på strengen . En av disse metodene ( " c_str ( )" ) gir en C - stil -streng som representerer den C + + streng. Dette betyr at avkastningen verdien vil ende opp som et tegn array som inneholder tegnene i strengen , inkludert null oppsigelse karakter.
Kopiering av C String
< p > å faktisk gjøre noe med C - stil streng hentet fra c_str ( ) , må programmerer å sette det inn i en karakter matrise. Dette krever at " strcpy "-metoden , som vil kopiere en karakter matrise til en annen : en
# include
# include
# include < ; iostream >
bruker namespace std;
string str = "A String ";
røye str2 [ 50 ];
strcpy ( str2 , str . c_str ( ) )
nå vil C - stil streng representasjon av " str " kopiere inn i karakteren array " str2 " ( inkludert null - tegn ) .
Telle tegn
nå som programmereren har en rekke kopi av strengen , inkludert null tegn som vil informere programmereren når strengen slutter , blir det et spørsmål om bare å telle tegn til programmet treffer null karakter : en
int i = 0;
while ( ! str2 [ i] = "\\ 0 ") {
i + + Online
}
cout << i + 1;
"mens " loop sjekker hvert tegn fra begynnelsen ( 0th tegnplassering ) til å nå null tegn . Deretter skriver programmet i en ( fordi indeksen starter på 0 , og null tegn stilling telles ikke ) som resulterer i en avkastning verdi på åtte .