C++ Funzioni per le stringhe: strcpy(), strcat(), strlen(), strcmp()

⚡ Riepilogo intelligente

C++ Le funzioni per le stringhe, come strcpy, strcat, strlen e strcmp, consentono ai programmi di copiare, unire, misurare e confrontare il testo. Questa risorsa spiega cos'è una stringa, come dichiarare stringhe in stile C e stringhe di tipo std::string, come accedere ai loro valori e come applicare le funzioni principali per le stringhe, con esempi pratici.

  • 🔤 Definizione di base: Una stringa è una sequenza di caratteri; una C++ string è un oggetto della classe std::string.
  • 🧱 Due dichiarazioni: C++ supporta array di caratteri in stile C terminati da '\0' e il tipo di classe più sicuro std::string.
  • 📥 Accesso ai valori: Le stringhe vengono lette e stampate per nome, come dimostrato sia con gli array di caratteri che con std::string.
  • Funzioni stringa: strcpy copia, strcat concatena, strlen misura la lunghezza e strcmp confronta due stringhe.
  • 📦 Intestazione obbligatoria: Le funzioni per le stringhe C risiedono nell'intestazione cstring, che deve essere inclusa prima dell'utilizzo.

C++ Funzioni di stringa

Cos'è una stringa?

Una stringa è una sequenza di caratteri. UN C++ `string` è un oggetto della classe `std::string`. I caratteri vengono memorizzati come sequenze di byte, con accesso consentito a un singolo byte di ciascun carattere.

C++ Le stringhe allocano la memoria in modo dinamico. Se necessario, è possibile allocare ulteriore memoria alla stringa durante l'esecuzione. Poiché non vi è preallocazione di memoria, non si verifica alcuno spreco di memoria. Possiamo eseguire diverse operazioni sulle stringhe, tra cui confronto, concatenazione, conversione, ecc.

Dichiarazione di stringhe

C++ supporta due tipi di dichiarazioni di stringa:

  • Stringa di caratteri in stile C
  • Tipo di classe stringa

Stringa di caratteri di tipo C

Questo tipo di dichiarazione di stringa è stato introdotto nel Linguaggio di programmazione C.. C++ continua a supportarlo. Si tratta semplicemente di un array unidimensionale di caratteri terminato da un carattere nullo (\0). Una stringa terminata da un carattere nullo ha i caratteri che compongono la stringa seguiti da un carattere nullo.

Considera la dichiarazione di stringa fornita di seguito:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

La dichiarazione di cui sopra crea una stringa che forma la parola John. La parola ha 4 caratteri, ma la stringa ha una dimensione di 5. Lo spazio aggiuntivo consente di contenere il carattere nullo.

Utilizzando la regola di inizializzazione dell'array, possiamo scrivere l'istruzione precedente come segue:

char name[] = "John";

Nota che non è necessario inserire il carattere nullo alla fine della costante stringa. C++ il compilatore posizionerà automaticamente '\0' alla fine della stringa durante l'inizializzazione dell'array.

std::stringa

Lo standard C++ La libreria fornisce la classe stringa, che supporta varie operazioni sulle stringhe. Viene scritta come std::string.

Per utilizzare questa classe, dobbiamo prima includerla nel nostro spazio di lavoro utilizzando il preprocessore #include come mostrato di seguito:

#include <string>

Successivamente, possiamo dichiarare la nostra stringa utilizzando la parola chiave string. Per esempio:

string name = "John";

L'istruzione precedente creerà una stringa denominata name per contenere il valore John.

Accesso ai valori stringa

In C++, possiamo accedere ai valori della stringa utilizzando il nome della stringa. Per esempio:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

Produzione:

Accesso ai valori stringa

Ecco uno screenshot del codice:

Accesso ai valori stringa

Code Spiegazione:

  1. Includere il file di intestazione iostream nel nostro codice. Ci permetterà di leggere e scrivere sulla console.
  2. Includere lo spazio dei nomi std in modo da utilizzare le sue classi e funzioni senza chiamarlo.
  3. Chiamata alla funzione main() all'interno della quale deve essere inserita la logica del programma. La parentesi graffa { indica l'inizio del corpo della funzione main().
  4. Dichiarare una stringa di caratteri e darle il nome nome. La stringa memorizzerà il valore John. Lo spazio extra memorizzerà il carattere nullo.
  5. Stampa del testo sulla console.
  6. Stampa il valore della stringa denominata name sulla console.
  7. La funzione main() dovrebbe restituire un valore se il programma funziona correttamente.
  8. Fine del corpo della funzione main().

Ecco un altro esempio di utilizzo di C++ classe di stringa standard:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";

	cout << "The name is : " << name << endl;

	return 0;
}

Produzione:

Accesso ai valori stringa

Ecco uno screenshot del codice:

Accesso ai valori stringa

Code Spiegazione:

  1. Includere il file di intestazione iostream nel nostro codice. Ci permetterà di leggere e scrivere sulla console.
  2. Inclusa la classe stringa standard nel nostro codice.
  3. Includere lo spazio dei nomi std in modo da utilizzare le sue classi e funzioni senza chiamarlo.
  4. Chiamata alla funzione main() all'interno della quale deve essere inserita la logica del programma. La parentesi graffa { indica l'inizio del corpo della funzione main().
  5. Dichiarare una stringa e assegnarle il nome name. La stringa memorizzerà il valore Guru99
  6. Stampa del valore del nome della stringa insieme al testo sulla console.
  7. La funzione main() dovrebbe restituire un valore se il programma funziona correttamente.
  8. Fine del corpo della funzione main().

Funzioni stringa in C++

Spesso vorrai manipolare le stringhe. C++ fornisce una vasta gamma di funzioni che puoi utilizzare a questo scopo. Queste funzioni sono definite nel intestazione, quindi dobbiamo includerla nel nostro codice per poter utilizzare le funzioni. Vediamone alcune:

stricpy()

Questa è la funzione di copia delle stringhe. Copia una stringa in un'altra stringa.

Sintassi:

strcpy(string1, string2);

I due parametri della funzione, string1 e string2, sono stringhe. La funzione copierà la stringa string2 in string1.

strcat ()

Questa è la funzione di concatenazione delle stringhe. Concatena le stringhe.

Sintassi:

strcat(string1, string2);

I due parametri della funzione, string1 e string2, sono le stringhe da concatenare. La funzione sopra riportata concatenerà la stringa string2 alla fine della stringa string1.

strlen ()

Questa è la funzione della lunghezza della stringa. Restituisce la lunghezza della stringa passata come argomento.

Sintassi:

strlen(string1);

Il parametro string1 è il nome della stringa di cui si vuole determinare la lunghezza. La funzione precedente restituirà la lunghezza della stringa string1.

strcmp ()

Questa è la funzione di confronto delle stringhe. Viene utilizzato per il confronto tra stringhe.

Sintassi:

strcmp(string1, string2);

La funzione sopra riportata restituirà 0 se le stringhe string1 e string2 sono simili, un valore inferiore a 0 se string1 < string2 e un valore superiore a 0 se string1 > string2.

Esempio:

L'esempio seguente mostra come utilizzare le funzioni stringa sopra indicate:

#include <iostream>
#include <cstring>
using namespace std;
int main() {

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

Produzione:

Funzioni stringa in C++

Ecco uno screenshot del codice:

Funzioni stringa in C++

Code Spiegazione:

  1. Includere il file di intestazione iostream nel nostro codice. Ci permetterà di leggere e scrivere sulla console.
  2. Incluso lo standard intestazione nel nostro codice.
  3. Includere lo spazio dei nomi std in modo da utilizzare le sue classi e funzioni senza chiamarlo.
  4. Chiamata alla funzione main() all'interno della quale deve essere inserita la logica del programma. La parentesi graffa { indica l'inizio del corpo della funzione main().
  5. Dichiarazione di una stringa di 10 caratteri e assegnazione del nome name1. La stringa memorizzerà il valore Guru99
  6. Dichiarare una stringa di 10 caratteri e darle il nome name2. La stringa memorizzerà il valore John.
  7. Dichiarare una stringa di 10 caratteri e darle il nome name3.
  8. Dichiarare un variabile intera chiamato Len.
  9. Copia della stringa nome1 nella stringa nome3.
  10. Stampa il valore della stringa name3 insieme ad del testo sulla console. Dovrebbe stampare Guru99
  11. Concatenando la stringa name2 alla fine della stringa name1. Il valore di name1 è ora Guru99 Giovanni.
  12. Stampa il valore della stringa name1 insieme ad del testo sulla console. Dovrebbe stampare Guru99 Giovanni.
  13. Determinare la lunghezza della stringa denominata name1 e assegnare il valore della lunghezza alla variabile len.
  14. Stampare il valore della variabile len insieme ad altro testo sulla console.
  15. La funzione main() dovrebbe restituire un valore se il programma funziona correttamente.
  16. Fine del corpo della funzione main().

DOMANDE FREQUENTI

Sì. Gli assistenti IA possono convertire gli array di caratteri in std::string, aggiornare le funzioni correlate e spiegare i vantaggi in termini di sicurezza. Gli sviluppatori dovrebbero comunque esaminare le modifiche per verificare i casi limite, le dimensioni dei buffer e il comportamento previsto.

Sì. Gli strumenti di intelligenza artificiale generano esempi pratici, spiegano il comportamento di strcpy e strcat e segnalano i rischi di buffer overflow. Questo accelera la comprensione, ma eseguire il codice personalmente rimane il modo migliore per verificarne il comportamento.

`std::string` gestisce la memoria in modo dinamico e fornisce operazioni integrate come la concatenazione e il confronto. Le stringhe in stile C sono array di caratteri fissi terminati da '\0' che richiedono una gestione manuale della memoria e sono più soggette a errori.

Possono causare overflow del buffer se l'array di destinazione è troppo piccolo. Alternative più sicure includono strncpy, strncat o semplicemente l'utilizzo di operazioni std::string, che gestiscono la memoria automaticamente e riducono questi rischi.

Riassumi questo post con: