Merkkijonovirta stringstream jäsentämiseen
Käyttäkää std::stringstreamia tekstin tokenisointiin ja jäsentämiseen tyypitetyiksi arvoiksi.
Merkkijonovirta stringstream jäsentämiseen on ilmainen C++ Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu C++ Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C++ Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on stringstream?
std::stringstream käärii merkkijonon iostream-rajapinnan ympärille. Lukekaa ja kirjoittakaa siihen operaattoreilla >> ja << aivan kuin käyttäisitte virtoja cin tai cout.
#include <sstream>
std::stringstream ss;Merkkijonojen rakentaminen stringstreamilla
Käyttäkää sitä monimutkaisten merkkijonojen rakentamiseen eri tyyppien arvoista. Kutsukaa funktiota .str() saadaksenne tuloksen.
std::stringstream out;
out << "User: " << name << ", Age: " << age;
std::string result = out.str();Jäsentäminen stringstreamilla
Alustakaa virta merkkijonosta ja poimikaa arvot operaattorilla >>. Se jakaa syötteen osiin tyhjätilan perusteella.
std::stringstream in("42 3.14 hello");
int i; double d; std::string s;
in >> i >> d >> s;Rivin lukeminen osiksi
Yhdistäkää getline ja stringstream, jotta voitte jakaa yhden rivin kerrallaan osiin.
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 25Jakaminen erottimen kohdalta
Välittäkää stringstreamin getline-funktiolle erotin, jotta voitte jakaa tekstin pilkkujen, puolipisteiden tai minkä tahansa merkin kohdalta.
std::string csv = "apple,banana,cherry";
std::stringstream ss(csv);
std::string fruit;
while (std::getline(ss, fruit, ',')) {
std::cout << fruit << "\n";
}istringstream ja ostringstream
Vaihtoehtoja on kolme:
std::istringstream— vain lukemiseenstd::ostringstream— vain kirjoittamiseenstd::stringstream— molempiin
Käyttäkää selkeyden vuoksi mahdollisimman rajattua vaihtoehtoa.
Jäsennysvirheiden tarkistaminen
Jos arvon poimiminen epäonnistuu, esimerkiksi väärän tyypin vuoksi, virta asettaa fail-bitin. Tarkistakaa poiminnan jälkeen !ss tai ss.fail().
std::stringstream ss("not_a_number");
int x;
if (!(ss >> x)) {
std::cout << "Parse failed";
}stringstreamin nollaaminen
Jos haluatte käyttää stringstreamia uudelleen, tyhjentäkää sekä sen tila että sisältö.
std::stringstream ss;
ss << "first";
ss.str(""); // clear contents
ss.clear(); // clear flags
ss << "second";Luvusta merkkijonoksi
Yksinkertaisiin muunnoksiin std::to_string on lyhyempi vaihtoehto kuin stringstream.
std::string s = std::to_string(42); // "42"
std::string p = std::to_string(3.14); // "3.140000"Merkkijonosta luvuksi ilman virtoja
std::stoi, std::stod ja std::stoll jäsentävät lukuja merkkijonoista ja aiheuttavat poikkeuksen virheellisen syötteen yhteydessä.
int n = std::stoi("42");
double d = std::stod("3.14");
// std::stoi("xyz") throws std::invalid_argumentC++17 std::from_chars
Parhaan suorituskyvyn saavuttamiseksi <charconv>-otsikkotiedoston std::from_chars jäsentää arvot ilman poikkeuksia tai varauksia. Se sopii erinomaisesti suorituskyvyn kannalta kriittisiin kohtiin.
Pikatarkistus
Mikä otsikkotiedosto on sisällytettävä, jotta voitte käyttää tyyppiä std::stringstream?
Kertaus
std::stringstream muuttaa merkkijonot virroiksi, mikä helpottaa jäsentämistä ja muotoilua. Yhdistäkää se funktioon std::getline, kun haluatte jakaa tekstin erottimien kohdalta. Yksinkertaisissa tapauksissa suosikaa funktioita std::to_string ja std::stoi.
Opi C++ tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 51
- Oppitunnit
- 203
Usein kysytyt kysymykset
Onko oppitunti ”Merkkijonovirta stringstream jäsentämiseen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa C++ Academy-oppimispolun 3 oppituntia, myös oppitunnin “Merkkijonovirta stringstream jäsentämiseen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. C++ Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Merkkijonovirta stringstream jäsentämiseen”?
Käyttäkää std::stringstreamia tekstin tokenisointiin ja jäsentämiseen tyypitetyiksi arvoiksi. Harjoittelet C++ Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C++ Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C++ Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Merkkijonovirta stringstream jäsentämiseen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C++ Academy-oppitunnilla?
Kyllä. Jokainen C++ Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- std::string ja C-tyyliset merkkitaulukot
- Merkkijono-operaatiot: yhdistäminen, osat, haku ja korvaus
- Merkkijonovirta stringstream jäsentämiseen
- Merkkijonojen muunnokset: to_string ja stoi