HOWTO · C++
Trova la lunghezza di una stringa in C++
Questo articolo mostra come trovare la lunghezza di una stringa in C++. Esplora vari metodi, incluse le funzioni integrate come length() e size(), nonché un approccio con un ciclo personalizzato. Impara a gestire in modo efficace i dati delle stringhe nei tuoi programmi C++ con esempi di codice pratici e spiegazioni dettagliate.
In questa pagina
Per una std::string, chiama length() o size() per ottenere il numero di elementi char memorizzati. Le due funzioni membro restituiscono lo stesso conteggio. Ad esempio, la stringa "Hello, C++!" ha 11 elementi:
#include <iostream>
#include <string>
int main() {
const std::string message = "Hello, C++!";
std::cout << message.length() << '\n';
}
11
Gli esempi seguenti utilizzano intestazioni C++ standard e funzioni main autonome. Ogni output mostra il conteggio stampato dal proprio esempio.
Ottenere la lunghezza di una std::string con length()
Usa length() quando vuoi chiedere a una stringa il conteggio dei suoi elementi memorizzati. Restituisce il numero di elementi char nella stringa. Quel conteggio include qualsiasi elemento nullo incorporato che faccia parte del valore memorizzato; non si ferma al primo \0 come fa una funzione per stringhe C.
Il risultato è un conteggio di elementi char, non necessariamente un conteggio di caratteri percepiti dall’utente o di punti di codice Unicode. Il testo UTF-8 può usare più elementi char per un singolo carattere visualizzato. Usa length() per la lunghezza memorizzata della stringa, e scegli un’operazione consapevole di Unicode quando l’attività richiede conteggi dei caratteri del testo.
Ottenere la lunghezza di una std::string con size()
size() restituisce lo stesso numero di length() per std::string. Scegli una delle due grafie in base alla leggibilità o al codice circostante; non è necessario preferirne una per le prestazioni. size() è anche comunemente usato con i contenitori standard, dove riporta il numero di elementi.
#include <iostream>
#include <string>
int main() {
const std::string language = "C++ strings";
std::cout << language.size() << '\n';
}
11
Includi <string> per usare std::string, e <iostream> quando scrivi il risultato di questo esempio in std::cout.
Contare gli elementi di una std::string con un ciclo for basato su intervallo
Un ciclo for basato su intervallo può contare ogni elemento di una stringa. Questo è utile per imparare come funziona l’iterazione o quando ogni elemento ha anche bisogno di elaborazione. Per una normale richiesta di lunghezza, length() e size() esprimono l’intento direttamente.
#include <cstddef>
#include <iostream>
#include <string>
std::size_t countElements(const std::string& value) {
std::size_t count = 0;
for (char element : value) {
++count;
}
return count;
}
int main() {
const std::string value = "count me";
std::cout << countElements(value) << '\n';
}
8
Questo ciclo visita ogni elemento char memorizzato, incluso un elemento nullo incorporato. std::size_t è il tipo senza segno standard usato per le dimensioni e gli indici dei contenitori.
Contare una stringa terminata da null con un ciclo while
Un ciclo while manuale si applica a una sequenza di caratteri terminata da null, spesso chiamata stringa C. Il ciclo avanza fino a raggiungere il carattere nullo di terminazione. Il suo puntatore deve riferirsi a una sequenza valida che contenga un terminatore; un puntatore arbitrario senza questa garanzia non può essere attraversato in modo sicuro in questo modo.
#include <cstddef>
#include <iostream>
#include <string>
std::size_t countUntilNull(const char* text) {
std::size_t count = 0;
while (text[count] != '\0') {
++count;
}
return count;
}
int main() {
const std::string value = "C++ strings";
std::cout << countUntilNull(value.c_str()) << '\n';
}
11
c_str() fornisce un puntatore a una rappresentazione terminata da null della stringa. Il ciclo conta solo la parte prima del primo carattere nullo, quindi può differire dalla lunghezza memorizzata completa quando la std::string contiene un null incorporato.
Usare std::strlen con una stringa terminata da null
La funzione della libreria C std::strlen è un’altra opzione quando l’input è già una stringa di byte valida terminata da null. Includi <cstring> per la sua dichiarazione. Conta i byte prima del primo carattere nullo, quindi non è un sostituto di length() quando hai bisogno della lunghezza memorizzata completa di una std::string che può contenere elementi nulli incorporati.
#include <cstring>
#include <iostream>
#include <string>
int main() {
const std::string value = "C++ strings";
std::cout << std::strlen(value.c_str()) << '\n';
}
11
Il risultato di c_str() di una std::string è terminato da null. Per un const char* autonomo, std::strlen richiede che il puntatore si riferisca a una sequenza valida terminata da null; altrimenti, la sua scansione può leggere oltre la memoria disponibile.
Scegliere il metodo giusto per la lunghezza della stringa
Per una std::string, usa length() o size() per ottenere il conteggio memorizzato dei suoi elementi char. Sono equivalenti, e <string> dichiara il tipo stringa. Usa un ciclo basato su intervallo quando insegni o elabori gli elementi mentre li conti.
Per una stringa C, usa std::strlen quando l’input è valido e terminato da null, oppure usa un ciclo while per illustrare l’attraversamento. Entrambi si fermano al primo carattere nullo. I metodi di std::string contano gli elementi memorizzati, inclusi i null incorporati; nessuno di questi conteggi deve essere confuso con un conteggio generale dei caratteri Unicode.