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.8 (96%) 5 votes

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

  1. J'ai une question. Comment faire du vélo I à un tableau, pour trouver en elle un symbole, et d'ajouter à côté est le même. Par exemple, l'utilisateur entre D:\myfolder\ а на выходе должно быть D:\\myfolder\\

    1. Voir la vidéo. Il est inf, si elle est choisie pour un tableau d'auteurs définition de la taille du tableau[], qui est la fonction sizeof, avec l'aide d'un chat peut être dans le pour faire défiler tous les éléments. pour ( int i = 0; je<taille de(tableau); i ++). Atteindre l'insert souhaité et. Je pense que, si.

      1. Ce n'est pas vrai:
        1. taille de() résultats Encombrement un tableau d'octets, pour 10 ensemble d'éléments ombles il sera 10, et pour le même tableau int il sera 40.
        2. taille de la matrice peut être définie comme sizeof( tableau ) / taille de( tableau[ 0 ] ). mais cette – Seulement dans le domaine du tableau (de le transférer quelque part dans la fonction).
        3. Le tableau ne peut pas être “insérer” membre, possible que si la pièce pousser tous les tours suivants sur 1 à droite, mais il est beaucoup trop cher.
        4. chaîne В, contrairement à la matrice, insérer l'élément peut être.

  2. bonjour. Je comprends la question, cette ligne doit ajouter le caractère. (sujet de la leçon parce que la ligne)

  3. pourquoi quelque chose ne fonctionne pas. Lang premier étudiant écrit à la variable, et le nom de la seconde ne même pas entrer (immédiatement des sauts au groupe №)
    rapide, Je ne sais pas)

    1. le fait, que, après l'entrée des données dans la dernière structure de plot de champ[je].ballon[j] в потоке cin остаётся символ ‘\n’. Il était le sien et lit méthode getline(), sans suspendre le programme, attente d'entrée.
      Vous devez ajouter cin.get() la dernière équipe dans la boucle extérieure.

      Dmitry Belik

  4. Trouver le produit d'un nombre pair et le minimum, sostavlâûŝuû un-
    Thoroe numéro X comment résoudre ce problème?

    1. principalement, dans votre formulation du problème n'est pas correct!
      ce que cela signifie “Numéro du composant”? En mathématiques, il n'y a pas de concept sostavlyayushey.

      comme vous, par exemple,, imaginer comment devrait ressembler une solution pour une valeur particulière de X, disons, X = 113? écrire.

      1. Affichez ensuite, что нет четного минимального числа в введеном числе

  5. rapide, не пойму почему пропускается 2й запрос на ввод слов?

    в консоли выводится следующее:

    Enter some words : word
    word
    Default char is: et
    Enter new char: w
    Новый символ: w
    Thats It!!!
    2 Enter some words :
    3 Enter some words : word
    word
    Для продолжения нажмите любую клавишу . . .

  6. как значение переменной 32 разряда Превратить в строку, pour, чтобы потом её разделить на 4 octet?

    1. Как-то так (в деталях отладите сами):

Laisser un commentaire

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