C++ Academy · Pelajaran

Aliran Rentetan stringstream untuk Penghuraian

Gunakan std::stringstream untuk menokenkan dan menghuraikan teks kepada nilai bertip.

Pelajaran 3 daripada 413 langkah

Aliran Rentetan stringstream untuk Penghuraian ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah itu stringstream?

std::stringstream membalut rentetan dalam antara muka iostream. Baca daripadanya dan tulis kepadanya dengan >> dan << seolah-olah ia ialah cin atau cout.

#include <sstream>
std::stringstream ss;

Membina Rentetan dengan stringstream

Gunakannya untuk membina rentetan kompleks daripada jenis yang bercampur. Panggil .str() untuk mendapatkan hasilnya.

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

Menghurai dengan stringstream

Mulakan dengan rentetan dan ekstrak nilai menggunakan >>. Ia memecahkan rentetan kepada token berdasarkan ruang kosong.

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

Membaca Satu Baris kepada Token

Gabungkan getline dengan stringstream untuk memecahkan satu baris pada satu-satu masa.

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

Memisahkan pada Pembatas

Hantar pembatas kepada getline pada stringstream untuk memisahkan rentetan berdasarkan koma, koma bertitik atau sebarang aksara.

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

istringstream dan ostringstream

Tiga bentuk tersedia:

  • std::istringstream — baca sahaja
  • std::ostringstream — tulis sahaja
  • std::stringstream — kedua-duanya

Gunakan bentuk yang paling khusus untuk kejelasan.

Menyemak Ralat Penghuraian

Jika pengekstrakan gagal, contohnya kerana jenis yang salah, strim menetapkan bit kegagalan. Semak !ss atau ss.fail() selepas pengekstrakan.

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

Menetapkan Semula stringstream

Untuk menggunakan semula stringstream, kosongkan keadaan dan kandungannya.

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

Nombor kepada Rentetan

Untuk penukaran ringkas, std::to_string lebih pendek berbanding stringstream.

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

Rentetan kepada Nombor Tanpa Strim

std::stoi, std::stod dan std::stoll menghuraikan nombor daripada rentetan dan mencetuskan pengecualian untuk masukan yang tidak sah.

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

C++17 std::from_chars

Untuk kelajuan maksimum, std::from_chars dalam <charconv> menghuraikan tanpa pengecualian atau peruntukan memori. Sesuai untuk laluan yang kerap dilaksanakan.

Semakan Pantas

Pengepala manakah yang mesti disertakan untuk menggunakan std::stringstream?

Ringkasan

std::stringstream menukar rentetan menjadi strim untuk penghuraian dan pemformatan yang mudah. Gabungkannya dengan std::getline untuk memisahkan rentetan berdasarkan pembatas. Untuk kes ringkas, utamakan std::to_string dan std::stoi.

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Aliran Rentetan stringstream untuk Penghuraian” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Aliran Rentetan stringstream untuk Penghuraian”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Aliran Rentetan stringstream untuk Penghuraian”?

Gunakan std::stringstream untuk menokenkan dan menghuraikan teks kepada nilai bertip. Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Aliran Rentetan stringstream untuk Penghuraian” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. std::string berbanding Tatasusunan Aksara Gaya C
  2. Operasi Rentetan: concat substr find replace
  3. Aliran Rentetan stringstream untuk Penghuraian
  4. Penukaran Rentetan: to_string dan stoi
← Kembali ke C++ Academy