Fonctions de chaîne de manutention en C ++

Fonctions de chaîne de manutention en C ++
4.2 (84%) 10 votes




функции strlen (), strcat (), strcpy (), strcmp () в C++

après, que nous connaissons chaînes et des tableaux de caractères en C ++, examiner les fonctions les plus courantes pour travailler avec eux. La leçon sera entièrement construite dans la pratique. Nous allons écrire leurs propres programmes-analogues pour le traitement des lignes et parallèlement à l'utilisation des fonctions de la bibliothèque standard cstring (string.h – dans les anciennes versions). Donc, vous êtes sur le point de se présenter, comment ils fonctionnent. Les fonctions de la bibliothèque standard cstring sont:

  • strlen() – calcule la longueur de la chaîne (nombre de caractères à l'exclusion \0);
  • strcat() – Il combine les chaînes;
  • strcpy() – copie les symboles d'une ligne à l'autre;
  • strcmp() – compare deux chaînes ensemble .

Il est certainement pas toutes les fonctionnalités, seules celles, qui est recouverte à l'article.

strlen() (la longueur des mots – longueur)

Notre programme, qui calcule le nombre de caractères par ligne:

Pour calculer les caractères d'une chaîne d'une durée indéterminée (que l'utilisateur pénètre), nous avons utilisé le cycle tandis que – lignes 13 – 17. Il passe par toutes les cellules du réseau (tous les caractères de la chaîne) alternativement, en commençant par zéro. Lorsque, à un cycle de l'étape pour répondre Box ourStr [amountOfSymbol], qui stocke le symbole \0, symboles de pause du cycle de buste et augmenter le compteur amountOfSymbol.

Ainsi, le code ressemblera, le remplacement de notre section de code sur la fonction strlen():

Comme vous pouvez le voir, Ce code de. Il n'a pas eu à déclarer des variables supplémentaires et utiliser une boucle. Le flux de sortie cout nous sommes passés dans la chaîne de fonction – strlen(ourStr). Il est suggéré que la longueur de la ligne de retour et le numéro de programme. Comme dans le code analogique précédent, symbole \0 pas inclus dans le nombre total de caractères.

Le résultat est le programme dans le premier et le second semblable:

функция strlen () в C++

strcat() (concaténation de mots – composé)

programme, que l'extrémité d'une ligne, ajoute la deuxième ligne. en d'autres termes, – Il combine deux lignes.

Selon les commentaires dans le code devrait être tout clair. Ci-dessous, nous écrivons un programme pour effectuer la même action, mais en utilisant le strcat(). Dans cette fonction, nous allons donner deux arguments (deux lignes) – strcat(someText1, someText2); . La fonction ajoute une chaîne someText2 à la ligne someText1. Dans le même symbole ' 0' à la fin someText1 Il remplace le premier caractère someText2. Elle ajoute également une finale ' 0'

La mise en œuvre de l'union de deux lignes, En utilisant la fonction standard, Je pris une ligne de code dans le programme – 14-rangée.

résultat:

strcat c++, strcat_s c++

Que doit prêter attention à la première et deuxième code – la taille du premier caractère de la matrice doit être suffisante pour que la deuxième rangée de caractères locaux. Si la taille est insuffisante – peut se produire la fin du programme anormale, depuis l'enregistrement de la ligne de mémoire, qui occupe la première rangée. par exemple:

Dans ce cas,, strokovaya constante “Apprendre C ++ c nous!” Il ne peut pas être écrit dans le tableau someText1. Comme il n'y a pas assez d'espace, pour de telles opérations.

Si vous utilisez une version récente de Microsoft Visual Studio environnement de développement, vous pouvez rencontrer l'erreur suivante:: “Erreur C4996: 'strcat’: Cette fonction ou variable peuvent être dangereux. Pensez à utiliser strcat_s au lieu. Pour désactiver deprecation, utilisation _CRT_SECURE_NO_WARNINGS. Voir l'aide en ligne pour plus de détails.” En effet,, qui a développé une nouvelle version, plus sûr de la fonction strcat – il strcat_s. Elle se soucie, afin qu'il n'y ait débordement de tampon (tableau de caractères, qui a produit enregistrement deuxième ligne). Environnement vous permet d'utiliser une nouvelle fonction, au lieu du jour. En savoir plus sur ce qui peut être sur le site msdn. Cette erreur peut se produire, si vous utilisez la fonction strcpy, qui sera discuté ci-dessous.

strcpy() (copie Slovénie – copier)

A vendre jusqu'à une rangée et l'insérer à la place d'une autre rangée.

Appliquer la bibliothèque de fonction standard cstring:

Essayez de compiler et d'abord, et un second programme. Vous verrez ce résultat:

strcpy c ++

strcmp() (Slovénie comparer – comparaison)

Cette fonction est conçue de sorte: Elle compare le caractère de deux C-string par le caractère. Si les chaînes sont identiques (et les symboles et leur nombre) – la fonction renvoie au numéro de programme 0. Si la première ligne est plus longue qu'une seconde – renvoie au numéro de programme 1, et si moins, la -1. nombre -1 à l'époque, lorsque la longueur des lignes est, mais les lignes des caractères ne correspondent pas.

strcmp c ++ programme avec strcmp():

strcmp c ++

Partager sur les réseaux sociaux nos articles avec vos amis, qui apprennent également les bases de la programmation en C ++.

Sur notre site a déjà la possibilité de souscrire, recevoir une notification des nouveaux articles. Pour vous abonner – entrez votre e-mail ci-dessous.

Bulletin de nouvelles leçons sur la programmation:

25 réflexions sur "Fonctions de chaîne de manutention en C ++

  1. Bonjour. Скажите пожалуйста, почему когда объединяем две строки и второму символьному массиву задаем длину массива, par exemple

    , то в этом случае второй массив не объединяется с первым?

  2. Объясните, s'il vous plaît, почему в примере с объединением строк
    int count1 = 0; // для индекса ячейки где хранится ‘\0первой строки
    tandis que (someText1[count1] != 0)
    мы пишем “someText1[count1] != 0” pas “someText1[count1] != ‘\0′”?
    Мы же вроде бы ищем элемент окончания символьной строки ‘\0’? При чем здесь ноль?
    Хотя должен заметить, у меня а Коудблоксе работает и с нулем

  3. Уважаемый автор!
    По-моему, в первом примере сравнений строк пропущена директива препроцессору #include

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>