Normalerweise kann ein Programmierer die Länge eines Satzes ( oder String) in einem C + +-Programm von Berufungen die Zeichenfolge " length () "-Methode abzurufen. Allerdings Strings in C + + implementiert waren nicht immer vorhanden , und Programmierer keinen Zugang zu vorgefertigten Methoden wie length () . Zählt man die Länge eines Strings ohne diese in Verfahren gebaut beinhaltet Verständnis string, c -style Zeichen-Arrays , und wie man über sie zu durchlaufen. C + + und C Streicher Streicher
In C + +, die eingebaute Datentyp "string" stellt Sätze, Satzteile oder Wörter . Allerdings ist die String-Datentyp stellt tatsächlich was Programmierer ein " c -style " string rufen . In der ursprünglichen Sprache C , Programmierer Sätze wie Sammlungen (oder Arrays) von Zeichen gespeichert. Während also in C + +, sieht ein Satz Variablendeklaration wie :
string str = "Hallo ";
in C , sieht die gleiche Erklärung wie :
char str [ 50 ] = " hallo ";
Wo "str" stellt ein Array von 50 Zeichen . Da C-Strings sind Arrays einfach , sie alle am Ende mit einer Null endet Zeichen ( "\\ 0" ), die das Ende des Strings bedeutet .
Die " c_str ()" -Methode
Die interessante Sache über Strings in C + + ist, dass sie eine Klasse sind und als eine Klasse enthalten Methoden , die Arbeit an der Schnur zu tun. Eine dieser Methoden ( " c_str ()" ) liefert einen C-String , die die C + + -String darstellt. Dies bedeutet, dass der Rückgabewert wird am Ende als ein Zeichen-Array , das die Zeichen der Zeichenfolge , einschließlich der Null-Terminierung .
Kopieren der C String
um tatsächlich etwas zu tun mit dem C-String aus c_str () abgerufen werden, muss der Programmierer in ein Zeichen-Array setzen . Dies erfordert die " strcpy " -Methode, die ein Zeichen-Array zu einem anderen kopiert :
# include
# include
# include < ; iostream >
using namespace std;
string str = "Ein String ";
char str2 [50] ;
strcpy ( str2 , str . c_str ())
Nun wird die C-String Vertretung von "str" in den Zeichen-Array " str2 " (einschließlich null Zeichen ) zu kopieren.
Zählen der Charaktere
Nun , dass der Programmierer eine Reihe Kopie des Strings hat , einschließlich der null-Zeichen , die dem Programmierer , wenn der String endet , ist es eine Frage der einfaches Zählen Zeichen wird informiert, bis das Programm geht an den null Charakter :
int i = 0;
while (! str2 [i] = "\\ 0" ) {
i + + }
cout << i + 1;
Die " while"-Schleife prüft jedes Zeichen von Anfang an ( das 0. Charakter Position ) bis zum Erreichen der null-Zeichen . Dann druckt das Programm i +1 ( weil der Index beginnt bei 0 und das Null-Zeichen Position wird nicht gezählt ), die in einer Rückkehr Wert von 8 führt.