การจัดการกับข้อมูลที่เป็นข้อความหรือ strings นั้นเป็นหนึ่งในทักษะพื้นฐานที่สำคัญของการเขียนโปรแกรม ไม่ว่าคุณจะสร้างโปรแกรมแบบอย่างไร คุณก็มักรันเอนเคาน์เตอร์กับการที่ต้องแยกข้อความ หรือที่เราเรียกกันว่า "String Splitting" โดยพื้นฐานแล้ว C++ ไม่ได้มีไลบรารีสำหรับทำงานนี้ติดตั้งมาให้เลยเหมือนภาษาโปรแกรมบางภาษา แต่ด้วยความยืดหยุ่นและแรงของ C++ นับว่าไม่ใช่อุปสรรคเลยสักนิด มาดูกันว่าทำอย่างไร
เรามักใช้วิธีนี้เป็นประจำเพราะมันง่ายและรวดเร็ว สำหรับแยก string ตาม delimiter ที่กำหนด:
ในโค้ดด้านบนนี้ เราเพียงแค่สร้างฟังก์ชัน `split` ที่รับ string และตัว delimiter เป็นอินพุตต์ ภายในฟังก์ชัน เราประกาศ `vector` เพื่อเก็บผลลัพธ์ ใช้ `std::istringstream` สำหรับอ่านข้อมูลจาก string และใช้ `getline` เพื่อแยกข้อมูลตาม delimiter ที่กำหนด สุดท้ายคือการนำเอา tokens ที่ได้มาพิมพ์ออกมา
บางครั้งคุณอาจต้องการควบคุมการทำงานของการ split string ได้มากขึ้น ในกรณีนี้ เราสามารถใช้ pointers และ functions เพื่อจัดการกับ string ได้:
ในตัวอย่างที่ 2, เราใช้ `std::string::find` เพื่อหาตำแหน่งของ delimiter และ `std::string::substr` เพื่อตัด string ตามตำแหน่งที่ delimiter ปรากฏ วิธีนี้ให้อิสระในการกำหนด delimiter ที่เป็น string มากกว่าหนึ่งลักษณะ และครอบคลุมกรณีที่ซับซ้อนกว่า
ในกรณีที่ pattern ของข้อมูลมีความซับซ้อนและหลากหลาย, RegEx กลายเป็นเครื่องมือผ่านฟ้าที่มีอิสระสูงสุด:
ในตัวอย่างที่ 3, เราใช้ `std::regex` เพื่อกำหนด pattern ของ delimiter ที่มีความซับซ้อนหรือมีหลายต่อ อีกทั้งเรายังใช้ `std::sregex_token_iterator` เพื่อผ่านทุกๆตำแหน่งที่ตรงกับ RegEx ใน string วิธีนี้ใช้ได้ดีในการประมวลผลข้อมูลหรือ logs ที่มี structure ที่ไม่คงที่
การ split string มีความสำคัญมากในการจัดการข้อมูล เช่น การอ่านไฟล์ CSV ที่ต้องแยกค่าตาม comma (,) หรือการจัดการกับ logs ที่มีข้อมูลหลายค่าอยู่ในแต่ละบรรทัด นอกจากนี้ยังรวมไปถึงการดึงข้อมูลจาก text ที่มี การกำหนดรูปแบบ (format) ล่วงหน้า ทำให้ง่ายต่อการแยกและจัดการข้อมูลได้มากขึ้น
อย่าลืมว่า เครื่องมือต่างๆที่นำเสนอข้างต้นมีความสามารถให้คุณปรับแต่งได้เอง เป็นทักษะที่หลายภาคธุรกิจต้องการ ไม่ว่าคุณจะอยู่ในสายไหน การสามารถจัดการกับข้อมูลแบบนี้ได้คล่องแคล่วคือประโยชน์อย่างแท้จริง
และถ้าหากคุณสนใจอยากจะเรียนรู้สิ่งเหล่านี้ให้ลึกซึ้งกว่านี้ ที่ EPT หรือ Expert-Programming-Tutor เราพร้อมที่จะพาคุณเจาะลึกลงไปถึงรากฐานของการเขียนโปรแกรมในภาษา C++ และทักษะ IT อื่นๆที่เป็นที่ต้องการในโลกยุคปัจจุบันนี้ อย่าลืมที่จะมาเป็นส่วนหนึ่งกับเรา และพัฒนาความสามารถของคุณไปอีกขั้นกับ Expert-Programming-Tutor เพราะโอกาสอยู่ที่นี่ เพียงแค่คุณก้าวเข้ามา! ☺
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: c++ string_split std::istringstream pointers functions c++_standard_library regular_expressions regex delimiter vector string_handling text_parsing programming tutorial examples
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM