Cordes en C ++, et des tableaux de caractères





строки в С++

Avec des lignes que nous travaillons dans presque chacun de notre programme et de cette leçon. Plus précisément avec des constantes de chaîne – une séquence de caractères entre guillemets. Nous avions souvent pour afficher certaines informations. par exemple:

строки в С++

Texte entre guillemets est une constante de chaîne. Les guillemets sont utilisés pour déterminer le début et la fin d'une constante de chaîne, et il est souvent.

Très souvent, il est nécessaire non seulement d'imprimer des messages texte au cours du programme, mais aussi de travailler avec un certain texte, stocker quelque part, reportez-vous à modifier et, nécessité. K constantes de, discuté ci-dessus, nous ne pouvons pas appliquer au programme, par exemple, l'écraser (nous ne savons pas son nom ou une adresse dans la mémoire). Maintenant, vous en apprendrez davantage sur l'une des façons de travailler avec des chaînes en C ++. Plus tard, nous apprendrons plus à sens unique – en utilisant classe chaîne.

Ainsi, la première: en C ++ est utilisé pour stocker des tableaux de caractères de chaînes. Ce sont les mêmes tableaux, comme vous et moi avons déjà discuté dans l'article sur tableaux en C ++, mais ils ne stockent pas de données numériques, et le caractère. Vous pouvez imaginer les personnages du tableau en série dans les cellules de mémoire adjacentes – dans chaque cellule stocke un symbole et occupe un octet. Un octet parce que, que chaque élément est un tableau de caractères тип omble chevalier. Le dernier caractère de chaque symbole est une ligne \0 (caractère nul). par exemple:

строки в С++, символьные массивы в С++

le texte, l'espace, y compris, Il se compose de 11 caractères. Si la dernière cellule est telle . (point), pas de caractère nul \0 – le compilateur n'est pas la ligne. Et le travail devrait être avec cet ensemble de caractères, comme avec un réseau régulier – écrire à chaque cellule séparément et affichée caractère par caractère (en utilisant le cycle):

строки в С++, символьные массивы в С++

Heureusement, C ++ a une façon beaucoup plus pratique pour initialiser et accéder aux tableaux de caractères – rangée. Pour ce faire, le dernier caractère du tableau doit être un caractère nul \0. Il est celui qui fait l'ensemble d'une chaîne de caractères, travail qui, beaucoup plus facile, qu'avec un tableau de caractères.

ainsi chaîne déclarée – Nous créons un type tableau carboniser, Taille entre crochets est facultatif (il calcule le compilateur), opérateur = et des guillemets doubles écrire le texte de votre choix. Autrement dit, nous initialisons un tableau de constante de chaîne:

Prescrira le caractère nul n'est pas nécessaire. Il est présent implicitement et ceci est ajouté à chaque chaîne automatiquement constante. ainsi, malgré le fait que nous voyons 11 caractères par ligne, taille du tableau sera 12, depuis \0 aussi un symbole et occupe un octet de mémoire. Il prend la dernière cellule du tableau de caractères. Comme vous pouvez le voir, pour la sortie de la chaîne, suffit de se référer à elle par son nom: cout << str << endl; cout Il affiche un caractère par caractère, jusqu'à ce qu'elle rencontre dans l'une des cellules du réseau de nouvelle ligne \0 et la sortie est interrompue. Un tel appel au tableau de caractères ordinaire (tableau sans \0) inacceptable. Étant donné que le compilateur pour afficher les caractères sur l'écran, allant même au-delà de la portée du tableau, alors qu'il n'a pas rencontré un certain symbole de cellule de mémoire \0. Vous pouvez essayer de remplacer dans le premier exemple, au lieu de l'opérateur du cycle cout << str << endl; et voir, ce qui se passe. J'ai trouvé cette façon:

строки в С++, символьные массивы в С++

Je veux attirer votre attention sur la différence entre une constante de caractère (guillemets simples – 'F', '@' ) à partir d'une constante de chaîne (guillemets doubles "F", "@" ). pour la première, le compilateur C est alloué de un octet de stockage en mémoire. Pour le symbole enregistré entre guillemets, deux octets de mémoire seront attribués – pour la plupart des caractères et le zéro (ajouté par le compilateur).

Que faire si la ligne demandera à l'utilisateur avec le clavier? Dans ce cas, vous devez déclarer tableau carboniser indiquant sa taille suffisante pour stocker le caractère d'entrée, y compris \0. Ne pas oublier que le caractère nul. Si vous devez stocker 3 caractère du tableau, sa taille doit être un plus – à savoir 4.

строки в С++, символьные массивы в С++

initialisation à l'aide des guillemets vides, nous attribuons une valeur à chaque élément du tableau \0. Ainsi, la chaîne est effacée de “déchets” d'autres programmes. Même si l'utilisateur entre un nom contenant moins de caractères, après le nom est un symbole \0. Cela évitera des erreurs inutiles. À la mémoire de cette ligne ressemblerait à ceci:

строки в С++, символьные массивы в С++

à propos, si l'on suppose remplacer la cellule 11-ème du tableau – str[11] = ' 0';

строки в С++, символьные массивы в С++

et un réseau d'affichage à l'écran, on ne voit que purecodecpp malgré le fait, dans les cellules 12, 13, 14 ont été stockés symboles. caractère nul jouera un rôle majeur dans ce qui porte à l'écran et tout, qui est derrière elle ne sera pas affiché.

Parler de mettre des chaînes clavier Détail. le fait, qu'il ya des problèmes à connaître et qui doit apprendre à résoudre. Le programme suivant en entrant dans les lignes ne sont pas tous sera si lisse, comme nous voulons:

строки в С++, символьные массивы в С++

Ne vous inquiétez pas jusqu'à plus, cette entrée par l'intermédiaire gin neobhodimo latine productionodit. A propos de la manière d'introduire correctement l'alphabet cyrillique sera discuté dans un article distinct. Ici vous pouvez voir, que la citation, nous avons introduit, mais quand il est démontré, Nous voyons le premier mot uniquement. voici, que nous ne pouvons pas entrer un caractère nul à partir du clavier, et gin écart perçu, et l'onglet newline, comme la fin de la ligne. C'est, dans ce cas, gin J'ai lu le premier mot uniquement, une virgule et ajouté marquer automatiquement la fin de la ligne. Le reste des entrées placées dans la file d'attente d'entrée.

Ce problème est résolu simplement. En C ++, il existe des fonctions obtenir() et getline() , que nous pouvons utiliser avec gin. ils ressemblent à, mais le plus souvent utilisé est getline(). Dans cet article, nous ne considérerons pas la différence entre les. Remplissez notre entrée de programme getline ():

строки в С++, символьные массивы в С++

vous voyez, entre parenthèses, nous précisons deux arguments aux fonctions – dans ce qui est considéré comme un ensemble de symboles (nom du tableau) et la taille de la matrice – rangée 11. Le résultat nous convient – afficher toutes les correcte. Kinkgatlin() Il se lit dans un tableau de la ligne entière, y compris les espaces et les onglets, jusqu'à ce qu'une presse Entrer ou jusqu'à ce que la taille de la matrice est dépassée. newline caractère dans le tableau ne sera pas enregistré, et est remplacé par un caractère nul.

En C ++, les fonctions de manipulation chaîne, il y a beaucoup, dont nous parlerons dans le prochain article. Dans ce document, nous parlons des caractéristiques, ce qui permet d'écraser la ligne, unir les, par rapport à l'autre, etc..

En plus de la lecture, il est souhaitable de voir le tutoriel vidéo. Lignes 7 minutes:

Partager nos articles avec vos amis sur les réseaux sociaux – c'est le meilleur merci. Et si vous avez des questions et suggestions – laisser des commentaires.

Bulletin de nouvelles leçons sur la programmation:

Cordes en C ++, et des tableaux de caractères
4.9 (98.18%) 11 votes

19 réflexions sur "Cordes en C ++, et des tableaux de caractères

  1. Я не поняла как писать нормально с клавиатуры большой текст таким образом – ” ‘Ж’, ‘и’, ‘л’, …. ” – et ainsi de suite – я даже одно короткое слово замучился писатьа так чтобы просто в кавычках!?

Laisser un commentaire

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *