Comment manipuler des chaînes de caractère en C ++

Un tableau est une séquence de variables en C ++ qui partage le même nom et qui est référencée à l'aide d'un index. Ce qui suit Concatenate programme Entrées deux chaînes à partir du clavier et de les concaténer en une seule chaîne:

// Concatenate - concaténer deux chaînes // avec un "-" dans le milieu # include #comprendre #comprendre using namespace std - // prototype declarationsvoid concatString (char szTarget [], const char szSource []) - int main (int nNumberofArgs, char * pszArgs []) {// lus première chaîne ... omble szString1 [256] -cout lt; lt; "Saisissez la chaîne n ° 1:" - cin.getline (szString1, 128) - // ... maintenant la deuxième chaîne ... omble szString2 [128] -cout lt; lt; "Saisissez la chaîne n ° 2:" - cin.getline (szString2, 128) - // ... concaténer un "-" sur la première ... concatString (szString1, "-") - // ... maintenant ajouter le deuxième chaîne ... concatString (szString1, szString2) - // ... et afficher le resultcout lt; lt; " n" lt; lt; szString1 lt; lt; endl - // attendre utilisateur est prêt avant le programme // mettre fin pour permettre à l'utilisateur de voir le resultscout de programme lt; lt; "Appuyez sur Entrée pour continuer ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retour 0 -} // concatString - concaténer la chaîne szSource // sur la fin de la szTarget stringvoid concatString (char szTarget [], const char szSource []) {// trouver la fin de la première stringint targetIndex = 0-tout (szTarget [targetIndex]) {targetIndex ++ -} // virer le second sur la fin de la firstint SourceIndex = 0-tout (szSource [SourceIndex] ) {szTarget [targetIndex] = szSource [SourceIndex] -targetIndex ++ - ++ SourceIndex -} // amure sur la terminaison nullszTarget [targetIndex] = ' 0'-}

La Concatenate programme lit deux chaînes de caractères et les ajoute avec un "-" au milieu.

Le programme commence par la lecture d'une chaîne à partir du clavier. Le programme ne pas utiliser de la normale cin >> szString1 pour deux raisons. Tout d'abord, la cin >> opération arrête la lecture quand tout type d'espaces est rencontré. Personnages jusqu'à la première espaces sont lues, le caractère blanc est jeté, et les caractères restants sont laissés dans la trémie d'entrée pour la prochaine cin >> déclaration.




Ainsi, si vous étiez à entrer “ le chien ” ;, szString2 serait remplie de “ l ” et le mot “ Chien ” resterait dans la mémoire tampon d'entrée.

La deuxième raison est que le getline () permet au programmeur de spécifier la taille de la mémoire tampon. L'appel à la getline (szString2, 128) ne lira pas plus de 128 octets, peu importe combien sont entrée.

Au lieu de cela, l'appel à getline () entrées une ligne entière jusqu'à, mais non compris le saut de ligne à la fin.

Après la lecture de la première chaîne en szString1 [], le programme ajoute "-" sur l'extrémité en appelant concatString (). Il enchaîne la deuxième chaîne en appelant concatString () avec szString2 [].

La concatString () fonction accepte une chaîne de cible, szTarget, et une chaîne de source, szSource. La fonction balayage commence par szTarget pour le caractère nul de fin, qui stocke dans targetIndex. La fonction pénètre ensuite dans une deuxième boucle dans lequel il copie les personnages de la szSource en szTarget en commençant par le caractère nul. La déclaration finale concatString () gifle un nul final sur la corde terminée.

Un exemple de sortie du programme se présente comme suit:

Entrez chaîne n ° 1:ceci est une chaîneEntrez chaîne n ° 2:Ceci est une chaînececi est une chaîne - CECI EST UN STRINGPress Entrée pour continuer ...

» » » » Comment manipuler des chaînes de caractère en C ++