Wie man Manipulieren Strings mit Charakter in C ++

Ein Feld ist eine Sequenz von Variablen in C ++, die denselben Namen und referenziert unter Verwendung eines Index teilt. Folgende Verketten Programm-Eingänge zwei Strings von der Tastatur und verkettet sie zu einem einzelnen String:

// Concatenate - verketten zwei Strings // mit einem "-" in der Mitte # include #einschließen #einschließen using namespace std - // Prototyp concatString declarationsvoid (char szTarget [], const char szSource []) - int main (int nNumberofArgs, char * pszArgs []) {// lesen erste String ... char szString1 [256] -cout lt; lt; "Geben Sie String # 1:" - cin.getline (szString1, 128) - // ... jetzt der zweite String ... char szString2 [128] -cout lt; lt; "Geben Sie String # 2:" - cin.getline (szString2, 128) - // ... verketten a "-" auf die erste ... concatString (szString1, "-") - // ... jetzt hinzufügen zweite Saite ... concatString (szString1, szString2) - // ... und die resultcout Anzeige lt; lt; " N" lt; lt; szString1 lt; lt; Endl - // warten, bis der Benutzer bereit ist, bevor Programm beendet // dem Benutzer zu ermöglichen, das Programm resultscout zu sehen lt; lt; "Drücken Sie die Eingabetaste, um fortzufahren ..." lt; lt; Endl-cin.ignore (10, ' n') - cin.get () - return 0 -} // concatString - verketten die szSource Zeichenfolge // auf das Ende des szTarget concatString stringvoid (char szTarget [], const char szSource []) {// finden Sie das Ende des ersten stringint targetIndex = 0-while (szTarget [targetIndex]) {targetIndex ++ -} // die zweite auf das Ende des firstint tack source = 0-while (szSource [source] ) {szTarget [targetIndex] = szSource [source] -targetIndex ++ - ++ source -} // tack auf die Beendigung nullszTarget [targetIndex] = ' 0'-}

Das Verketten Programm liest zwei Zeichenketten und fügt sie zusammen mit einem "-" mitten drin.

Das Programm beginnt mit einer Zeichenkette von der Tastatur zu lesen. Das Programm verwendet nicht die normale cin >> szString1 aus zwei Gründen. Erstens, die cin >> Operation stoppt das Lesen, wenn jede Art von Leerzeichen auftritt. Zeichen bis zum ersten Leerzeichen gelesen werden, wird das Leerzeichen geworfen, und die verbleibenden Zeichen in dem Eingabetrichter links für die nächste cin >> Erklärung.

Somit wird, wenn Sie waren eingeben # 147-the Dog # 148-, szString2 würde gefüllt mit # 147-the # 148- und das Wort # 147-Hund # 148- würde in dem Eingangspuffer verbleiben.

Der zweite Grund ist, dass das getline () ermöglicht es dem Programmierer, die Größe des Puffers anzugeben. Der Aufruf getline (szString2, 128) nicht mehr als 128 Bytes egal lesen, wie viele eingegeben werden.

Stattdessen wird der Anruf zu getline () Eingänge eine ganze Zeile bis zu, jedoch nicht die Newline am Ende inklusive.

Nach den ersten String Lesen in szString1 [], das Programm anfügt "-" auf das Ende durch den Aufruf concatString (). Es verknüpft die zweite Zeichenfolge durch den Aufruf concatString () mit szString2 [].

Das concatString () Funktion akzeptiert eine Zielzeichenfolge, szTarget, und eine Quelle string, szSource. Die Funktion beginnt mit dem Scannen szTarget für das abschließende Nullzeichen, die er speichert in targetIndex. Die Funktion tritt dann in eine zweite Schleife, in der Kopien Zeichen aus der IT szSource in szTarget bei der abschließenden Null beginnen. Die Endabrechnung in concatString () schlägt eine abschließende Null auf dem fertigen String.

Ein Beispiel für die Ausgabe aus dem Programm sieht wie folgt aus:

Geben Sie String # 1:Dies ist ein StringGeben Sie String # 2:Dies ist ein Stringdies ist ein String - THIS IS A STRINGPress Geben Sie, um fortzufahren ...

Menü