0Pricing
C++ Academy · Lezione

String stream stringstream per il parsing

Utilizzi std::stringstream per tokenizzare e analizzare il testo in valori tipizzati.

String stream stringstream per il parsing è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Che cos'è uno stringstream?

std::stringstream incapsula una stringa in un'interfaccia iostream. Legga e scriva utilizzando >> e <<, come se si trattasse di cin o cout.

#include <sstream>
std::stringstream ss;

Costruzione di stringhe con stringstream

Lo utilizzi per costruire stringhe complesse a partire da tipi diversi. Chiami .str() per ottenere il risultato.

std::stringstream out;
out << "User: " << name << ", Age: " << age;
std::string result = out.str();

Analisi con stringstream

Lo inizializzi a partire da una stringa ed estragga i valori con >>. I token vengono separati dagli spazi vuoti.

std::stringstream in("42 3.14 hello");
int i; double d; std::string s;
in >> i >> d >> s;

Lettura di una riga in token

Combini getline con stringstream per suddividere una riga alla volta in token.

std::string line = "1 2 3 4 5";
std::stringstream ss(line);
int n;
while (ss >> n) {
    std::cout << n * n << " ";
}
// 1 4 9 16 25

Suddivisione in base a un delimitatore

Passi un delimitatore a getline su uno stringstream per suddividere il testo in base a virgole, punti e virgola o qualsiasi altro carattere.

std::string csv = "apple,banana,cherry";
std::stringstream ss(csv);
std::string fruit;
while (std::getline(ss, fruit, ',')) {
    std::cout << fruit << "\n";
}

istringstream e ostringstream

Esistono tre varianti:

  • std::istringstream — solo lettura
  • std::ostringstream — solo scrittura
  • std::stringstream — entrambe

Per maggiore chiarezza, utilizzi la variante più specifica.

Controllo degli errori di analisi

Se l'estrazione non riesce, ad esempio a causa di un tipo errato, lo stream imposta un bit di errore. Dopo l'estrazione, controlli !ss oppure ss.fail().

std::stringstream ss("not_a_number");
int x;
if (!(ss >> x)) {
    std::cout << "Parse failed";
}

Reimpostazione di uno stringstream

Per riutilizzare uno stringstream, cancelli lo stato e il contenuto.

std::stringstream ss;
ss << "first";
ss.str("");        // clear contents
ss.clear();        // clear flags
ss << "second";

Da numero a stringa

Per conversioni semplici, std::to_string è più breve di uno stringstream.

std::string s = std::to_string(42);   // "42"
std::string p = std::to_string(3.14); // "3.140000"

Da stringa a numero senza stream

std::stoi, std::stod, std::stoll analizzano i numeri contenuti nelle stringhe e generano un'eccezione in caso di input non valido.

int n = std::stoi("42");
double d = std::stod("3.14");
// std::stoi("xyz") throws std::invalid_argument

C++17 std::from_chars

Per ottenere la massima velocità, std::from_chars in <charconv> analizza il testo senza eccezioni né allocazioni. È ideale nei percorsi ad alta frequenza.

Verifica rapida

Quale header deve includere per utilizzare std::stringstream?

Riepilogo

std::stringstream trasforma le stringhe in stream per facilitarne l'analisi e la formattazione. Lo combini con std::getline per suddividere il testo in base ai delimitatori. Per i casi semplici, preferisca std::to_string e std::stoi.

Domande Frequenti

La lezione «String stream stringstream per il parsing» è gratuita?

Sì — il testo completo di «String stream stringstream per il parsing» è 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 «String stream stringstream per il parsing»?

Utilizzi std::stringstream per tokenizzare e analizzare il testo in valori tipizzati. 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 3 di 4.

Quanto tempo richiede la lezione «String stream stringstream per il parsing»?

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. std::string e array di caratteri in stile C
  2. Operazioni sulle stringhe: concat, substr, find, replace
  3. String stream stringstream per il parsing
  4. Conversioni di stringhe: to_string e stoi
← Torna a C++ Academy