C++ Strings

Video tutorial gratuito di Tim Buchalka's Learn Programming Academy
Professional Programmers and Teachers - 2.2M students
59 corsi
2.244.228 studenti
Descrizione della lezione
In this video we learn about the sthe std::string class in C++
Segui il corso completo per saperne di più
Beginning C++ Programming - From Beginner to Beyond
Obtain Modern C++ Object-Oriented Programming (OOP) and STL skills. C++14 and C++17 covered. C++20 info see below.
45:50:18 di video on-demand • Ultimo aggiornamento: Aprile 2025
Learn to program with one of the most powerful programming languages that exists today, C++.
Obtain the key concepts of programming that will also apply to other programming languages
Learn Modern C++ rather than an obsolete version of C++ that most other courses teach
Learn C++ features from basic to more advanced such as inheritance and polymorphic functions
Learn C++ using a proven curriculum that covers more material than most C++ university courses
Learn C++ from an experienced university full professor who has been using and teaching C++ for more than 25 years
Includes Quizzes, Live Coding Exercises, Challenge Coding Exercises and Assignments
New Section: Learn to use Visual Studio Code with C++
New Section: Learn all about using C++ Lambda Expressions
Italiano [Auto]
In questo video, lo faremo
conoscere le stringhe c++. La stringa standard è una classe in
libreria di modelli standard c++ o stl. Potremmo fare un intero corso su solo la scl, e quel corso sarebbe molto lungo e complesso. Quindi in questo video, lo farò solo parlare degli elementi principali della classe stringa c++. Per usare le stringhe c++ plus, tu
deve includere il file di intestazione della stringa. Le stringhe sono nello spazio dei nomi standard. Quindi, per usarli senza usando lo standard dello spazio dei nomi, devi prefiggerli con standard e l'operatore di risoluzione dell'ambito. Questo vale anche per metodi di stringa standard che funzionano con le stringhe c++. Come le stringhe in stile c, le stringhe c++
sono archiviati in modo contiguo in memoria. Tuttavia, a differenza delle stringhe in stile c di dimensioni fisse, le stringhe c++ sono dinamiche e possono crescere e rimpicciolire secondo necessità in fase di esecuzione. Le stringhe C++ funzionano con il flusso operatori di inserimento ed estrazione proprio come la maggior parte degli altri tipi in c++. La classe string c++ fornisce un ricco insieme di metodi o funzioni che ci permettono di manipolare facilmente le stringhe. È probabile che se ne hai bisogno fare qualcosa con la stringa che la funzionalità è già lì per te senza doverlo riscrivere da zero. Le stringhe C++ funzionano anche con la maggior parte di gli operatori a cui siamo abituati per assegnare, confrontare e così via. Questo è un enorme vantaggio rispetto allo stile c strings poiché le stringhe in stile c non funzionano bene con quegli operatori. Anche se le stringhe c++ sono preferito nella maggior parte dei casi a volte è necessario utilizzare stringhe in stile c. Forse ti stai interfacciando con una libreria che è stata ottimizzata per le stringhe in stile c. Bene, in questo caso d'uso, tu può ancora usare le stringhe c++ e trarne vantaggio. E quando hai bisogno puoi you convertire facilmente la stringa c++ in una stringa in stile c e viceversa. Come i vettori, le stringhe c++ sono più sicuro poiché forniscono metodi che possono rimbalzare il controllo e consentire per trovare errori nel codice in modo da poterli correggere prima del tuo programma va in produzione. Vediamo come possiamo dichiarare
e inizializza le stringhe c++. In tutti gli esempi in questo video, Suppongo che il file di intestazione della stringa sia stato incluso e che stiamo usando lo spazio dei nomi standard. Qui puoi vederne sei esempi di dichiarazione e inizializzazione di stringhe c++. Ci sono anche altri modi di usare
costruttore e sintassi di assegnazione. Ma sto principalmente usando il
sintassi dell'inizializzatore in questo video. Nel primo esempio, noi
dichiara S1 come stringa. Notare che la stringa
il tipo è minuscolo. A differenza delle stringhe in stile c, c++
le stringhe sono sempre inizializzate. In questo caso, S1 è
inizializzato con una stringa vuota. Niente spazzatura e memoria
di cui preoccuparsi. Nel secondo esempio, io sono dichiarando e inizializzando S2 alla stringa Frank. Nota che Frank è a
letterale in stile c, va bene. Verrà convertito in una stringa c++. Nel terzo esempio, S3 viene inizializzato da S2, quindi viene creata una copia di S2. S2 e S3 saranno entrambi Frank, ma Franchi differenti in differenti aree di memoria. Nel quarto esempio, sto dichiarando
e inizializzando S4 da Frank. Ma sto usando solo i primi tre
caratteri della stringa Frank. Quindi S4 verrà inizializzato
alla corda fra. Nel quinto esempio, sto inizializzando
S5 da S3 che è Frank. Ma nota i due interi che
segui S3 e l'inizializzatore. Il primo intero è l'inizio
indice e il secondo è la lunghezza. Quindi in questo caso, inizializziamo S5 con i due caratteri che indicizzano 0 e 1 da S3. Quindi S5 sarà inizializzato a fr. Infine, possiamo inizializzare il stringa a un numero specifico di un carattere specifico. In questo caso, tre x. Nota che questo usa il costruttore sintassi con le parentesi invece delle ricci. Ora che ne abbiamo dichiarati alcuni stringhe, vediamo come possiamo assegnare loro altri valori. Con le stringhe c++, puoi
utilizzare l'operatore di assegnazione. Questo sembra molto più naturale piuttosto che dover usare la funzione di copia del flusso come faremmo noi devono nelle stringhe in stile c. In questo esempio, ho
dichiarato S1 ed è vuoto. Quindi posso assegnare lo stile c
il c++ letterale passa a S1. Abbastanza fresco e abbastanza facile. S1 crescerà dinamicamente secondo necessità. Nel secondo esempio, ho dichiarato
S2 e l'ho inizializzato su hello. Quindi assegno S1 a S2. In questo caso, S2 sarà
non contengono più ciao. Conterrà un
copia di S1, c++ rocce. Vediamo come possiamo
concatenare le stringhe insieme. Concatenazione di stringhe solo significa costruire una stringa da altre due stringhe. Possiamo usare l'operatore più
per concatenare stringhe c++. In questo esempio, ne ho creati due stringhe la prima parte che è c++ e la seconda che è potente. Quindi ho una frase stringa vuota. Nota che ne sto assegnando due enunciare il risultato concatenato della prima parte più uno spazio più parte due più uno spazio più la lingua. Se mostrassi la frase ora, lo farebbe
display c++ è un linguaggio potente. Notare che l'ultimo esempio
sulla diapositiva non verrà compilato. Questo perché abbiamo
due letterali in stile c. E non puoi concatenare
letterali in stile c. Funziona solo per le stringhe c++. Una combinazione di stringhe c++ e le stringhe in stile c vanno bene, come abbiamo visto nelle assegnazioni precedenti. Proprio come abbiamo fatto con i vettori, possiamo usare gli stessi operatori per accedere agli elementi stringa. In questo caso, gli elementi
di una stringa sono caratteri. Quindi possiamo usare il pedice
operatore e il metodo at. Ricorda, il metodo dell'app
esegue il controllo del rimbalzo. Quindi se superi i limiti, lo farai
ottenere un'eccezione che è possibile correggere. Vediamo come possiamo visualizzare
caratteri sullo schermo uno alla volta. In questo esempio, abbiamo a
stringa S1 inizializzata su Frank. Possiamo usare l'intervallo basato per loop
per visualizzare i caratteri della stringa. In questo caso, f-r-a-n-k e il
verrà visualizzato il carattere null. Più o meno quello che ti aspettavi, giusto. Notare che il tipo del ciclo
variabile è char in questo caso. Cosa pensi che succederà
se lo cambiamo in intero. In questo caso, ho
cambiato in intero. È questo che ti aspettavi. Abbiamo detto al compilatore di usare un intero
ed è esattamente quello che sta facendo. Quindi, invece di visualizzare il carattere valore di ogni elemento nella stringa, sta visualizzando il valore intero che rappresenta quei personaggi. Quindi in questo caso, 70 114 97 110 107 e 0 che rappresentano f r a n k e ovviamente il carattere null. Questi sono i codici ascii
per quei personaggi Non è stato possibile confrontare le stringhe c++
essere più facile o più intuitivo. Usiamo la stessa uguaglianza e operatori relazionali che abbiamo sempre utilizzato. Stiamo confrontando due oggetti stringa, quindi verranno confrontati carattere per carattere, e il loro carattere i valori verranno confrontati lessicalmente. Quindi una a maiuscola è minore di una z maiuscola e una a maiuscola è minore di una a minuscola. Questo perché la capitale le lettere vengono prima delle lettere minuscole nella tabella ascii. Non possiamo usare questi operatori su due letterali in stile c, ma possiamo usarli nei seguenti casi. Se abbiamo due stringhe c++, se avere una stringa c++ e un letterale in stile c o se ne abbiamo uno c++ stringa e una stringa in stile c. Vediamo alcuni esempi. Qui stiamo definendo cinque c++
variabili stringa, da S1 a S5. E poi facciamo un po' di confronto
operazioni e vedere i risultati. Ovviamente lo faresti normalmente usa queste espressioni booleane in un'istruzione if o in un ciclo espressioni condizionali. Nel primo esempio, controlliamo
per vedere se S1 è uguale a S5. Questo è vero poiché entrambi
contengono la mela di stringa. S1 è uguale a S2 è falso poiché
S1 è mela e S2 è banana. Che ne dici di S1 non uguale a S2. Questo è vero da Apple
non è uguale alla banana. Nel caso di S1 minore di S2, anche questo è vero poiché la mela viene lessicalmente prima della banana nella tabella ascii. Anche S2 maggiore di S1 è vero poiché
la banana viene lessicalmente prima della mela. Nota che la banana ha la maiuscola
b mentre apple ha una a minuscola. S4 inferiore a S5 è falso poiché la mela con la minuscola non viene prima della mela con la maiuscola. E infine, A1 uguale mela
è vero perché sono uguali Nota in questo caso, mela
è un letterale stringa in stile c. La classe stringa c++ ha un ricco insieme di metodi molto utili, troppi metodi da trattare in dettaglio in questo video. Ti incoraggio a studiare il c++ string class poiché sarà una classe che utilizzerai spesso, ed è importante che tu sappia cosa fornisce, quindi non reinventi la ruota quando devi risolvere un problema. Il metodo della sottostringa estrae
una sottostringa da una stringa c++. Non cambia la stringa. Restituisce semplicemente la sottostringa e
potresti farci quello che vuoi. In questo caso, sono
semplicemente visualizzandolo. Ma puoi facilmente assegnare
esso a una variabile stringa. Ecco, ho inizializzato
S1 a questo è una stringa. Il primo esempio prende una sottostringa di questa stringa a partire dall'indice 0 e includendo esattamente 4 caratteri. Se ci sono meno di 4 caratteri a sinistra nella stringa originale, vengono inclusi tutti i caratteri rimanenti. In questo caso, la sottostringa è la
prima parola nella stringa, this. Nel secondo esempio, torniamo la sottostringa a partire dall'indice cinque e include due caratteri. Questa è la sottostringa è, IS. Infine l'ultimo esempio inizia da indice 10 e include quattro caratteri, questo restituirà il test della sottostringa. Vediamo come possiamo cercare
una stringa per un altro. La classe stringa c++ ha a has
metodo molto utile chiamato find. Trova opere con
caratteri e stringhe. Si aspetta una stringa o un carattere e restituisce l'indice o la posizione dell'inizio di quella stringa o carattere nella stringa originale. Quindi se abbiamo una stringa S1 che è inizializzato su questo è un test e vogliamo trovare la stringa this, otterremmo indietro uno 0 poiché questo inizia dall'indice 0. Nel secondo esempio siamo
cercare la stringa è. In questo caso, restituirebbe 2
poiché il primo inizia all'indice 2. Nel terzo esempio, troviamo
il test delle stringhe e otteniamo un 10. Nel quarto esempio, stiamo cercando per un singolo carattere, la e minuscola, che si trova all'indice 11. Nel quinto esempio, usiamo una variante del metodo che permette anche l'indice dove si da cui iniziare la ricerca. In questo caso, voglio
trova di nuovo la sottostringa is. Ma voglio iniziare dall'indice 4. Quindi questa volta trova l'è
che si trova all'indice 5. Infine, cosa succede se il la stringa o il carattere che vogliamo trovare non è presente. Bene, in questo caso il metodo ritorna una posizione finale, il che significa che non sono disponibili informazioni sulla posizione. Puoi controllare per questo
valore in un'istruzione if. E se è vero, sai cosa stai
stavano cercando non c'era. Molto facile, molto potente. C'è anche un metodo r find che avvia la ricerca dalla fine della stringa all'inizio della stringa. Possiamo anche rimuovere i caratteri da una stringa c++ utilizzando i metodi erase e clear. Per il metodo di cancellazione, tu fornire l'indice iniziale e quanti caratteri eliminare. Il metodo clear elimina tutti i caratteri nella stringa in modo che la stringa diventi la stringa vuota. Abbiamo visto un sacco di corde metodi e puoi vedere quanto sia potente questa classe. Diamo un'occhiata a un altro utile metodo e un altro operatore utile comunemente usato. Il metodo è il metodo della lunghezza. Restituisce il numero di caratteri
attualmente nell'oggetto stringa. In questo esempio, S1 è Frank. Quindi s1. la lunghezza restituirà un 5. Questo è così facile e qualcosa è impossibile da fare con le stringhe di celle c poiché non lo fanno contenere informazioni sulle dimensioni. L'operatore che volevo coprire è l'operatore di assegnazione della concatenazione composta. In questo caso, S1 è Frank. E posso dire che S1 più è uguale a James. E James sarà concatenato a Frank e l'intera stringa del risultato verrà assegnata nuovamente a S1. Questo è davvero utile e funziona molto più o meno allo stesso modo in cui lavoravano gli operatori di assegnazione composti interi e doppi e così via. Ci sono anche molti altri metodi nella classe di stringhe c++ che puoi scoprire mentre studi c++. Ok, c'è un'altra cosa che vorrei di cui parlare prima di concludere questo video, inserisci con le stringhe c++. Le stringhe C++ funzionano alla grande con
flussi di input e output. Come hai visto, inserendo una stringa c++ variabili in un flusso di output come cout è abbastanza semplice e funziona semplicemente come abbiamo sempre fatto. Estrarre una stringa c++ da anche un flusso di input come cin funziona nello stesso modo che ci aspettiamo. Tuttavia, c'è un problema che è
vale anche per le stringhe in stile c. Supponiamo di aver definito S1 come una stringa c++ ed estraiamo una stringa da cin come al solito. Ora supponiamo che io digiti
in ciao spazio lì. Quando visualizzo S1, I
vedrà solo ciao. Il là non è stato estratto. Questo perché il l'operatore di estrazione si interrompe quando vede spazi bianchi. In molti casi, vogliamo leggere un'intera riga di testo fino a quando l'utente preme invio. Ad esempio, voglio il
stringa per essere ciao lì. Supponiamo che io te lo chieda
Inserisci il tuo nome e cognome. Voglio essere in grado di leggere
William Smith, non solo William. In questo caso, possiamo usare
la funzione getline. La funzione getline ha
un paio di varianti. La prima variante ne prevede due
elementi tra parentesi. Il primo elemento è il flusso di input. In questo caso, stiamo usando cin
che per impostazione predefinita è la tastiera. Il secondo elemento è il nome di la stringa c++ in cui si desidera memorizzare il testo immesso dall'utente. Questo è tutto. Molto facile. Nell'esempio, io sono
dicendo getline cin S1. Ora tutto l'utente
tipi è memorizzato in S1. Getline smette di leggere
quando vede la nuova linea. Non include la nuova linea
nella stringa lo scarta semplicemente. L'altra variante di getline ha
un altro elemento tra parentesi. I primi due sono uguali a prima, il flusso di input e il nome della variabile stringa c++. Il terzo è chiamato delimitatore. Questo è il personaggio che vuoi
getline per interrompere la lettura dell'input a. Quindi finché l'utente non entra questo carattere, tutto verrà memorizzato nella variabile stringa. Una volta visualizzato il delimitatore, non è incluso nella variabile stringa e viene scartato. Nell'ultimo esempio, sto usando
una x minuscola come delimitatore. Quindi se scrivo questo è x, allora la stringa memorizzata in S1 sarà this is e la x viene scartata. Bene, abbiamo trattato molto materiale in questo video, e c'è molto altro da imparare nella lezione sugli archi. Ma questo ti dà una buona punto di partenza in modo da poter utilizzare efficacemente la classe stringa c++. Inoltre ora sei stato presentato alla programmazione orientata agli oggetti con vettori e stringhe. Molto presto, svilupperemo il nostro
proprie classi che è piuttosto interessante. Questo completa questo video. Per favore, gioca con la classe degli archi. Creare esempi, assegnare, eliminare, visualizzare e provare alcuni dei metodi in questo video. Non ci vorrà molto prima sei davvero a tuo agio a lavorare con le stringhe c++.