|

Funcții pentru Prelucrarea Șirurilor de Caractere din Biblioteca în C++ 4


1. Obiectivele lecției:

  • Să înțeleagă scopul și utilizarea funcțiilor din biblioteca <cstring> pentru prelucrarea șirurilor de caractere.
  • Să implementeze exemple practice care utilizează aceste funcții.
  • Să aplice funcțiile în probleme ce implică manipularea șirurilor de caractere.

2. Biblioteca <cstring>

Biblioteca <cstring> oferă funcții utile pentru manipularea șirurilor de caractere (în stil C). Toate aceste funcții lucrează cu șiruri terminate cu caracterul ‘\0’.


1. Funcții pentru manipularea șirurilor

FuncțieDescriereExemplu
strlen(sir)Returnează lungimea șirului (fără caracterul ‘\0’).strlen(„Salut”) -> 5
strcpy(dest, src)Copiază șirul src în dest.strcpy(dest, „Salut”)
strncpy(dest, src, n)Copiază primii n caractere din src în dest.strncpy(dest, „Salut”, 3)
strcat(dest, src)Concatenează src la sfârșitul lui dest.strcat(dest, ” lume!”)
strncat(dest, src, n)Concatenează primii n caractere din src la dest.strncat(dest, ” lume!”, 5)
strcmp(sir1, sir2)Compară lexicografic două șiruri (0 dacă sunt egale).strcmp(„abc”, „abc”) -> 0
strncmp(sir1, sir2, n)Compară primii n caractere ale șirurilor.strncmp(„abc”, „abd”, 2) -> 0
strchr(sir, c)Găsește prima apariție a caracterului c în șir.strchr(„Salut”, ‘a’) -> pointer la ‘a’
strrchr(sir, c)Găsește ultima apariție a caracterului c în șir.strrchr(„Salut”, ‘a’) -> pointer la ‘a’
strstr(sir1, sir2)Găsește primul șir sir2 în sir1.strstr(„Salut lume”, „lume”)
strtok(sir, delim)Împarte un șir în segmente, folosind delimitatori.strtok(„abc,def,ghi”, „,”)

3. Exemple practice


Exemplu 1: Lungimea unui șir

#include <iostream>

#include <cstring>

using namespace std;

int main() {

    char sir[] = „Salut”;

    cout << „Lungimea sirului \”” << sir << „\” este: ” << strlen(sir) << endl;

    return 0;

}


Exemplu 2: Copierea și concatenarea șirurilor

#include <iostream>

#include <cstring>

using namespace std;

int main() {

    char sir1[50] = „Salut”;

    char sir2[] = ” lume!”;

    // Copiere

    char sir3[50];

    strcpy(sir3, sir1);

    cout << „Copiat: ” << sir3 << endl;

    // Concatenare

    strcat(sir1, sir2);

    cout << „Concatenare: ” << sir1 << endl;

    return 0;

}


Exemplu 3: Compararea șirurilor

#include <iostream>

#include <cstring>

using namespace std;

int main() {

    char sir1[] = „abc”;

    char sir2[] = „abd”;

    if (strcmp(sir1, sir2) == 0) {

        cout << „Sirurile sunt egale.” << endl;

    } else if (strcmp(sir1, sir2) < 0) {

        cout << „\”” << sir1 << „\” este mai mic lexicografic decât \”” << sir2 << „\”” << endl;

    } else {

        cout << „\”” << sir1 << „\” este mai mare lexicografic decât \”” << sir2 << „\”” << endl;

    }

    return 0;

}


Exemplu 4: Găsirea unui caracter sau subșir

#include <iostream>

#include <cstring>

using namespace std;

int main() {

    char sir[] = „Salut lume”;

    // Găsirea unui caracter

    char* pozitie = strchr(sir, ‘u’);

    if (pozitie) {

        cout << „Prima aparitie a caracterului ‘u’ este la pozitia: ” << (pozitie – sir) << endl;

    }

    // Găsirea unui subșir

    char* subSir = strstr(sir, „lume”);

    if (subSir) {

        cout << „Subsirul \”lume\” începe la pozitia: ” << (subSir – sir) << endl;

    }

    return 0;

}


Exemplu 5: Segmentarea unui șir (strtok)

#include <iostream>

#include <cstring>

using namespace std;

int main() {

    char sir[] = „abc,def,ghi”;

    char* token = strtok(sir, „,”);

    while (token != NULL) {

        cout << „Segment: ” << token << endl;

        token = strtok(NULL, „,”);

    }

    return 0;

}


4. Activități practice pentru elevi

  1. Scrieți un program care verifică dacă un șir este palindrom.
  2. Realizați un program care separă un șir în cuvinte și afișează fiecare cuvânt pe o linie nouă.
  3. Implementați un program care înlocuiește toate aparițiile unui caracter cu altul într-un șir.

5. Scheme logice

  1. Citirea unui șir:
    • Start -> Citire șir -> Afișare șir -> Stop.
  2. Compararea a două șiruri:
    • Start -> Comparare lexicografică cu strcmp -> Afișare rezultat -> Stop.
  3. Segmentarea unui șir:
    • Start -> Aplicare strtok -> Iterare pe segmente -> Afișare segmente -> Stop.

6. Concluzie:

  • Funcțiile din <cstring> sunt esențiale pentru manipularea șirurilor de caractere în stil C.
  • Aceste funcții permit operații precum copierea, concatenarea, compararea și segmentarea șirurilor.
  • Practica este importantă pentru a înțelege corect utilizarea și limitele acestor funcții.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *