สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์
ใช้ std::stringstream เพื่อแยกโทเคนและแยกวิเคราะห์ข้อความเป็นค่าตามชนิดข้อมูล
สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์ เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
stringstream คืออะไร
std::stringstream ครอบสตริงไว้ในส่วนติดต่อแบบ iostream คุณสามารถอ่านและเขียนข้อมูลด้วย >> และ << ได้ราวกับเป็น cin หรือ cout
#include <sstream>
std::stringstream ss;สร้างสตริงด้วย stringstream
ใช้ stringstream เพื่อสร้างสตริงที่ซับซ้อนจากข้อมูลหลายชนิด เรียก .str() เพื่อรับผลลัพธ์
std::stringstream out;
out << "User: " << name << ", Age: " << age;
std::string result = out.str();แยกวิเคราะห์ด้วย stringstream
เริ่มต้นจากสตริง แล้วดึงค่าออกมาด้วย >> โดยคำสั่งนี้จะแบ่งข้อมูลเป็นโทเค็นตามช่องว่าง
std::stringstream in("42 3.14 hello");
int i; double d; std::string s;
in >> i >> d >> s;อ่านหนึ่งบรรทัดเป็นโทเค็น
ใช้ getline ร่วมกับ stringstream เพื่อแบ่งข้อมูลในแต่ละบรรทัดออกเป็นโทเค็นทีละบรรทัด
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แบ่งตามตัวคั่น
ส่งตัวคั่นให้กับ getline ของ stringstream เพื่อแบ่งข้อมูลตามเครื่องหมายจุลภาค อัฒภาค หรืออักขระใด ๆ
std::string csv = "apple,banana,cherry";
std::stringstream ss(csv);
std::string fruit;
while (std::getline(ss, fruit, ',')) {
std::cout << fruit << "\n";
}istringstream และ ostringstream
มีให้เลือกสามรูปแบบ:
std::istringstream— อ่านอย่างเดียวstd::ostringstream— เขียนอย่างเดียวstd::stringstream— อ่านและเขียน
เลือกใช้รูปแบบที่แคบที่สุดเพื่อให้โค้ดชัดเจน
ตรวจสอบข้อผิดพลาดในการแยกวิเคราะห์
หากการดึงค่าล้มเหลว เช่น ชนิดข้อมูลไม่ถูกต้อง สตรีมจะตั้งบิตแสดงความล้มเหลว ให้ตรวจสอบ !ss หรือ ss.fail() หลังการดึงค่า
std::stringstream ss("not_a_number");
int x;
if (!(ss >> x)) {
std::cout << "Parse failed";
}รีเซ็ต stringstream
หากต้องการใช้ stringstream ซ้ำ ให้ล้างสถานะและเนื้อหาของสตรีม
std::stringstream ss;
ss << "first";
ss.str(""); // clear contents
ss.clear(); // clear flags
ss << "second";แปลงตัวเลขเป็นสตริง
สำหรับการแปลงแบบง่าย std::to_string จะกระชับกว่า stringstream
std::string s = std::to_string(42); // "42"
std::string p = std::to_string(3.14); // "3.140000"แปลงสตริงเป็นตัวเลขโดยไม่ใช้สตรีม
std::stoi, std::stod, std::stoll ใช้แยกวิเคราะห์ตัวเลขจากสตริง และจะแจ้งข้อผิดพลาดเมื่อข้อมูลขาเข้าไม่ถูกต้อง
int n = std::stoi("42");
double d = std::stod("3.14");
// std::stoi("xyz") throws std::invalid_argumentC++17 std::from_chars
หากต้องการความเร็วสูงสุด std::from_chars ใน <charconv> สามารถแยกวิเคราะห์ได้โดยไม่ใช้ข้อยกเว้นหรือการจองหน่วยความจำ เหมาะอย่างยิ่งสำหรับเส้นทางการทำงานที่ถูกเรียกบ่อย
ตรวจสอบอย่างรวดเร็ว
ต้องรวมส่วนหัวใดเพื่อใช้งาน std::stringstream
ทบทวน
std::stringstream เปลี่ยนสตริงให้เป็นสตรีมเพื่อให้แยกวิเคราะห์และจัดรูปแบบได้ง่าย ใช้ร่วมกับ std::getline เพื่อแบ่งข้อมูลตามตัวคั่น สำหรับกรณีง่าย ๆ ให้เลือกใช้ std::to_string และ std::stoi
เรียนรู้ C++ ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 51
- บทเรียน
- 203
คำถามที่พบบ่อย
บทเรียน “สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์”
ใช้ std::stringstream เพื่อแยกโทเคนและแยกวิเคราะห์ข้อความเป็นค่าตามชนิดข้อมูล คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม
ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- std::string เทียบกับอาร์เรย์อักขระแบบ C
- การดำเนินการกับข้อความ: ต่อ แบ่ง ค้นหา แทนที่
- สตรีมข้อความ stringstream สำหรับการแยกวิเคราะห์
- การแปลงข้อความ: to_string และ stoi