0Pricing
C++ Academy · Lezione

Perché usare string_view

Evitare copie di stringhe

Perché usare string_view è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.

Il costo delle copie

Passare std::string per valore copia l'intero buffer. Per il solo accesso in lettura, questa copia è lavoro inutile. std::string_view è una view leggera e non proprietaria, composta solo da un puntatore e una lunghezza. Includa <string_view>.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "hello";
    std::cout << sv << " len=" << sv.size() << "\n";
}

Cosa contiene una view

Una string_view memorizza soltanto un puntatore ai caratteri esistenti e una lunghezza. Non possiede né copia i dati.

#include <iostream>
#include <string>
#include <string_view>
int main() {
    std::string s = "world";
    std::string_view sv = s; // views s, no copy
    std::cout << sv << "\n";
}

Parametri di sola lettura

Accettare std::string_view consente alla funzione di lavorare con std::string, stringhe letterali e array di char, senza copiare nessuno di questi elementi.

#include <iostream>
#include <string_view>
void greet(std::string_view name) {
    std::cout << "Hi, " << name << "\n";
}
int main() {
    greet("Ada");
    greet(std::string("Bob"));
}

Nessuna allocazione

La creazione di una view non alloca mai memoria, quindi la view è economica da copiare e da passare per valore.

#include <iostream>
#include <string_view>
int main() {
    std::string_view a = "constant text";
    std::string_view b = a; // trivial copy
    std::cout << (a == b) << "\n";
}

Sottostringhe economiche

substr applicato a una view restituisce un'altra view nella stessa area di memoria, senza copiare caratteri.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "abcdef";
    std::cout << sv.substr(2, 3) << "\n"; // cde
}

Prestazioni per la sola lettura

Per le funzioni che si limitano a esaminare il testo, string_view evita sia l'allocazione sull'heap sia la copia, un vantaggio importante nei cicli intensivi e durante l'analisi.

Lunghezza e indicizzazione

Una view supporta l'interfaccia consueta: size(), empty(), l'indicizzazione e l'iterazione basata su intervallo.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "C++";
    for (char c : sv) std::cout << c << "-";
    std::cout << "\n" << sv.size() << "\n";
}

Le view sono di sola lettura

Non è possibile modificare i caratteri tramite una string_view; questa consente soltanto l'accesso in lettura. Per modificare il testo è necessaria la stringa proprietaria.

Da una stringa letterale a una view

Le stringhe letterali vengono convertite direttamente in view, rendendo estremamente economico passare testo costante.

#include <iostream>
#include <string_view>
using namespace std::string_view_literals;
int main() {
    auto sv = "literal"sv;
    std::cout << sv.size() << "\n";
}

Non sostituisce string

Usi std::string quando deve possedere, memorizzare o modificare il testo. Usi std::string_view per parametri temporanei di sola lettura.

Attenzione alla durata di vita

Poiché una view non possiede i propri dati, i caratteri sottostanti devono rimanere validi più a lungo della view. Un uso scorretto provoca view pendenti, un argomento trattato in una lezione successiva.

Verifica rapida

Verifichi la propria comprensione del motivo per cui esiste string_view.

Riepilogo

Ha imparato perché esiste string_view:

  • È una view non proprietaria composta da un puntatore e una lunghezza.
  • Accettarla evita copie e allocazioni per il testo di sola lettura.
  • Funziona con stringhe, stringhe letterali e array di char.
  • I dati osservati devono rimanere validi più a lungo della view.

Domande Frequenti

La lezione «Perché usare string_view» è gratuita?

Sì — il testo completo di «Perché usare string_view» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.

Cosa imparerò in «Perché usare string_view»?

Evitare copie di stringhe Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C++ Academy?

Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Perché usare string_view»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C++ Academy?

Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché usare string_view
  2. Creare viste
  3. Insidie e durata degli oggetti
  4. Algoritmi per stringhe
← Torna a C++ Academy