ในโปรแกรมนี้เราจะดูวิธีแยก (parse) สตริงที่คั่นด้วยคอมมาใน C++ เราจะใส่สตริงที่มีข้อความบางส่วน คั่นด้วยคอมมา หลังรันโปรแกรม จะแยกสตริงเหล่านั้นออกเป็น vector object
เพื่อแยกพวกมัน เราใช้ฟังก์ชัน getline() ไวยากรณ์พื้นฐานของฟังก์ชันนี้คือ:
getline (input_stream, string, delim)
ฟังก์ชันนี้ใช้สำหรับอ่านสตริงหรือบรรทัดจาก input stream
Input: สตริง "ABC,XYZ,Hello,World,25,C++" Output: สตริงที่แยกแล้ว ABC XYZ Hello World 25 C++
อัลกอริทึม
ขั้นตอน 1: สร้าง stream จากสตริงที่กำหนด
ขั้นตอน 2: ในขณะที่ stream ยังไม่จบ
ขั้นตอน 2.1: เอาส่วนก่อนคอมมา
ขั้นตอน 2.2: เพิ่มส่วนนั้นเข้า vector
ขั้นตอน 3: คืนค่า vector
ตัวอย่างโค้ด
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
main() {
string my_str = "ABC,XYZ,Hello,World,25,C++";
vector<string> result;
stringstream s_stream(my_str); // สร้าง string stream จากสตริง
while(s_stream.good()) {
string substr;
getline(s_stream, substr, ','); // ได้สตริงแรกที่คั่นด้วยคอมมา
result.push_back(substr);
}
for(int i = 0; i<result.size(); i++) {
// พิมพ์สตริงที่แยกแล้วทั้งหมด
cout << result.at(i) << endl;
}
}
ผลลัพธ์
ABC XYZ Hello World 25 C++