Strumień napisów stringstream do parsowania
Proszę używać std::stringstream do tokenizacji tekstu i parsowania go do wartości określonych typów.
Strumień napisów stringstream do parsowania to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.
Czym jest stringstream?
std::stringstream opakowuje ciąg znaków w interfejs strumienia iostream. Możesz odczytywać z niego i zapisywać do niego za pomocą >> i <<, tak jak z cin lub do cout.
#include <sstream>
std::stringstream ss;Tworzenie ciągów za pomocą stringstream
Użyj go do tworzenia złożonych ciągów z wartości różnych typów. Wywołaj .str(), aby uzyskać wynik.
std::stringstream out;
out << "User: " << name << ", Age: " << age;
std::string result = out.str();Parsowanie za pomocą stringstream
Zainicjalizuj go ciągiem znaków i pobieraj wartości za pomocą >>. Tokenizuje dane według białych znaków.
std::stringstream in("42 3.14 hello");
int i; double d; std::string s;
in >> i >> d >> s;Wczytywanie wiersza do tokenów
Połącz getline ze stringstreamem, aby tokenizować jeden wiersz na raz.
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 25Dzielenie według separatora
Przekaż separator do getline używanego na stringstreamie, aby dzielić tekst według przecinków, średników lub dowolnego znaku.
std::string csv = "apple,banana,cherry";
std::stringstream ss(csv);
std::string fruit;
while (std::getline(ss, fruit, ',')) {
std::cout << fruit << "\n";
}istringstream i ostringstream
Istnieją trzy odmiany:
std::istringstream— tylko odczytstd::ostringstream— tylko zapisstd::stringstream— odczyt i zapis
Dla większej czytelności używaj najwęższego interfejsu, który jest potrzebny.
Sprawdzanie błędów parsowania
Jeśli pobieranie się nie powiedzie, na przykład z powodu nieprawidłowego typu, strumień ustawi bit błędu. Po pobraniu danych sprawdź !ss lub ss.fail().
std::stringstream ss("not_a_number");
int x;
if (!(ss >> x)) {
std::cout << "Parse failed";
}Resetowanie stringstreama
Aby ponownie użyć stringstreama, wyczyść jego stan i zawartość.
std::stringstream ss;
ss << "first";
ss.str(""); // clear contents
ss.clear(); // clear flags
ss << "second";Liczba na ciąg znaków
W przypadku prostych konwersji std::to_string jest krótsze niż użycie stringstreama.
std::string s = std::to_string(42); // "42"
std::string p = std::to_string(3.14); // "3.140000"Ciąg znaków na liczbę bez strumieni
std::stoi, std::stod i std::stoll parsują liczby z ciągów znaków i zgłaszają wyjątek dla nieprawidłowych danych.
int n = std::stoi("42");
double d = std::stod("3.14");
// std::stoi("xyz") throws std::invalid_argumentC++17 std::from_chars
Aby uzyskać maksymalną szybkość, std::from_chars z nagłówka <charconv> parsuje dane bez wyjątków i alokacji pamięci. Idealnie nadaje się do często wykonywanych fragmentów kodu.
Szybkie sprawdzenie
Jaki nagłówek należy dołączyć, aby używać std::stringstream?
Podsumowanie
std::stringstream zamienia ciągi znaków w strumienie, ułatwiając parsowanie i formatowanie. Połącz go z std::getline, aby dzielić tekst według separatorów. W prostych przypadkach preferuj std::to_string i std::stoi.
Często zadawane pytania
Czy lekcja „Strumień napisów stringstream do parsowania” jest bezpłatna?
Tak — pełny tekst „Strumień napisów stringstream do parsowania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Strumień napisów stringstream do parsowania”?
Proszę używać std::stringstream do tokenizacji tekstu i parsowania go do wartości określonych typów. Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C++ Academy?
Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Strumień napisów stringstream do parsowania”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?
Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- std::string a tablice znaków w stylu C
- Operacje na ciągach: concat, substr, find, replace
- Strumień napisów stringstream do parsowania
- Konwersja ciągów: to_string i stoi