Fonctions de chaîne de manutention en C ++




функции 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:

Fonctions de chaîne de manutention en C ++
4.3 (86.67%) 12 votes

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

  1. Bonjour. qui se donne de grands airs, pourquoi, lorsque combiner deux lignes et le second groupe de caractères longueur de tableau spécifié, par exemple

    , puis la deuxième matrice ne soit pas combiné avec le premier?

    1. il est pas vrai.
      Vous avez le résultat peut être simplement placé dans someText1[].
      Augmenter la taille – ce que gourmand?
      par exemple: someText1[ 200 ]

  2. expliquer, s'il vous plaît, pourquoi, en association avec des lignes Exemple
    int = count1 0; // pour la cellule dans laquelle l'index est stocké « 0’ première rangée
    tandis que (someText1[count1] != 0)
    nous écrivons “someText1[count1] != 0” pas “someText1[count1] != « 0′”?
    Il semble être à la recherche d'un élément d'une extrémité de chaîne de caractères « 0 »? Qu'est-ce que le zéro?
    Bien que je dois dire, J'ai un Koudblokse travaille avec zéro…

    1. Comme le dossier « 0’ Encore une fois, et des moyens: octet, valeur numérique enregistré dans lequel égal 0.
      Ces dossiers sont équivalents.

  3. Cher auteur!
    À mon avis, dans les premières rangées exemple de comparaison directive omis #include préprocesseur

  4. Чета не могу понять
    char xsmibol[2] = {wParam, ‘\0’};
    вот так работает
    ————————–
    А вот так не работает:
    char xsmibol[2];
    xsmibol = {wParam, ‘\0’};

    Говорит 17 27 C:\Users\1\Documents\main1.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11
    17 12 C:\Users\1\Documents\main1.cpp [Error] assigning to an array from an initializer list
    37 14 C:\Users\1\Documents\main1.cpp [Error] expected primary-expression before ‘)’ token

    Что я делаю не так ?

Laisser un commentaire

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