C++ Academy · Lektion

String stream stringstream til parsing

Brug std::stringstream til at tokenisere og parse tekst til værdier med bestemte typer.

Lektion 3 af 413 trin

String stream stringstream til parsing er en gratis C++ Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i C++ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C++ Academy-kurset indeholder 4 lektioner i alt.

Hvad er en stringstream?

std::stringstream pakker en streng ind i en iostream-grænseflade. Læs fra og skriv til den med >> og <<, som om den var cin eller cout.

#include <sstream>
std::stringstream ss;

Byg strenge med stringstream

Brug den til at bygge komplekse strenge ud fra blandede typer. Kald .str() for at hente resultatet.

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

Fortolk med stringstream

Initialisér den ud fra en streng, og udtræk værdier med >>. Den opdeler teksten ved mellemrum.

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

Læs en linje som tokens

Kombinér getline med stringstream for at opdele én linje ad gangen.

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

Opdel ved et skilletegn

Angiv et skilletegn til getline på en stringstream for at opdele ved kommaer, semikoloner eller et hvilket som helst tegn.

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

istringstream og ostringstream

Der findes tre varianter:

  • std::istringstream — kun læsning
  • std::ostringstream — kun skrivning
  • std::stringstream — begge dele

Brug den mest specifikke variant for at gøre koden tydelig.

Kontrollér fortolkningsfejl

Hvis udtrækningen mislykkes, f.eks. på grund af en forkert type, sætter strømmen en fail-bit. Kontrollér !ss eller ss.fail() efter udtrækningen.

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

Nulstil en stringstream

Hvis du vil genbruge en stringstream, skal du rydde både tilstanden og indholdet.

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

Tal til streng

Til enkle konverteringer er std::to_string kortere end en stringstream.

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

Streng til tal uden streams

std::stoi, std::stod og std::stoll fortolker tal fra strenge og kaster en undtagelse ved ugyldige inddata.

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

C++17 std::from_chars

For maksimal hastighed fortolker std::from_chars i <charconv> uden undtagelser eller allokeringer. Den er ideel i ydeevnekritiske kodestier.

Hurtigt tjek

Hvilken headerfil skal du inkludere for at bruge std::stringstream?

Opsummering

std::stringstream omdanner strenge til streams, så de nemt kan fortolkes og formateres. Kombinér den med std::getline for at opdele ved skilletegn. Foretræk std::to_string og std::stoi i enkle tilfælde.

Gratis at komme i gang

Lær C++ med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “String stream stringstream til parsing” gratis?

Ja — alle 3 lektioner i læringssporet C++ Academy, inklusive “String stream stringstream til parsing”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. C++ Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “String stream stringstream til parsing”?

Brug std::stringstream til at tokenisere og parse tekst til værdier med bestemte typer. Du øver dig i C++ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C++ Academy?

Der kræves ingen tidligere erfaring. C++ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “String stream stringstream til parsing”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C++ Academy-lektion?

Ja. Alle C++ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. std::string kontra C-style char-arrays
  2. Strengoperationer: concat, substr, find, replace
  3. String stream stringstream til parsing
  4. Strengkonverteringer: to_string og stoi
← Tilbage til C++ Academy