Normalt kan en programmør hente længden af en sætning ( eller streng) i enhver C + +-programmet kaldelser strengen er " længde ( ) "-metoden. Men strenge som implementeret i C + + var ikke altid til rådighed , og programmører ikke har haft adgang til færdige metoder såsom længde (). Optælling længden af en streng uden at bruge denne indbyggede metode indebærer forståelse streng, c- stil tegndatatabeller , og hvordan du gentage over dem. C + + Strings og C Strings
C + +, den indbyggede datatype "streng " repræsenterer sætninger , sætninger eller ord. Men strengen datatype faktisk repræsenterer, hvad programmører kalder en " c- style" streng. I den oprindelige C-sprog , opbevares programmører sætninger som samlinger ( eller arrays ) af tegn . Så mens der i C + +, en sætning variabelerklæring ligner : Hej
string str = "Hello" ,
i C, samme erklæring ligner : Hej
char str [50 ] = "Hello" ,
Hvor " str " repræsenterer en vifte af 50 tegn. Da C -stil strenge er simpelthen arrays , de alle ender med en Null -tegn ( "\\ 0") , der betyder enden af strengen.
" C_str () " Method < br >
interessante ting om strenge i C + + er, at de er en klasse , og som en klasse indeholder metoder til at gøre arbejdet på strengen . En af disse metoder ( " c_str ( ) ") returnerer en C- stil streng der repræsenterer C + + streng . Det betyder, at den returnerede værdi vil ende som et tegn array, der indeholder de tegn i strengen , herunder null opsigelse tegn.
Kopiering af C String
for rent faktisk at gøre noget med C- style string hentet fra c_str () , programmøren har brug for at sætte det ind i en karakter array. Dette kræver " strcpy "-metoden , hvilket vil kopiere et tegn array til en anden : Hej
# include
# include
# include < ; iostream >
using namespace std ;
string str = " A String "
char str2 [50 ]
strcpy ( str2 , str. . c_str () )
nu vil C -style string repræsentation af " str " kopiere, i karakter array " str2 " ( herunder null - tegn ) .
tælle tegn
at programmøren har en matrix kopi af strengen , herunder nul-karakteren , der vil informere programmøren når streng ender , bliver det et spørgsmål om blot at tælle tegn, indtil programmet rammer null karakter : Hej
int i = 0;
while (! str2 [i] = "\\ 0" ) {
i + + Online
}
cout << i + 1 ,
", mens " loop kontrollerer hver karakter fra begyndelsen ( den 0. tegnposition ), indtil nå null-tegn . Derefter udskriver programmet i +1 ( fordi indekset starter på 0, og null-tegn position ikke talt med) , hvilket resulterer i en returværdi på 8 .