String stream stringstream til parsing
Brug std::stringstream til at tokenisere og parse tekst til værdier med bestemte typer.
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 25Opdel 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æsningstd::ostringstream— kun skrivningstd::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_argumentC++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.
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
- std::string kontra C-style char-arrays
- Strengoperationer: concat, substr, find, replace
- String stream stringstream til parsing
- Strengkonverteringer: to_string og stoi