C++:
การดึงข้อมูลย่อยออกมา
วิธีการ:
C++ ทำให้การดึงค่าย่อยเป็นเรื่องง่าย std::string
เป็นเพื่อนคู่ใจในที่นี้ ด้วยฟังก์ชัน substr()
ที่ทำงานหนักส่วนใหญ่ มาดูโค้ดกันเลย:
#include <iostream>
#include <string>
int main() {
std::string fullString = "Hello, World! Programming in C++ is fun.";
std::string snippet;
// ดึงค่า "World" โดยเริ่มที่ดัชนี 7 ด้วยความยาว 5
snippet = fullString.substr(7, 5);
std::cout << snippet << std::endl; // ผลลัพธ์: World
// ดึงค่า "Programming" โดยเริ่มที่ดัชนี 14
snippet = fullString.substr(14);
std::cout << snippet << std::endl; // ผลลัพธ์: Programming in C++ is fun.
return 0;
}
ลงลึก
การดึงค่าย่อยไม่ใช่เรื่องใหม่ โปรแกรมเมอร์ C แบบเก่าใช้ strncpy
และการบันทึกด้วยมือ การจัดการสตริงเป็นแหล่งที่มาของข้อผิดพลาดทั่วไป ดังนั้น C++ จึงมุ่งเน้นที่จะทำให้มันเรียบง่ายขึ้น std::string
และเมทอด substr
ของมันเริ่มต้นมาตั้งแต่ C++98 และได้ช่วยลดความเครียดมาตั้งแต่นั้น
ทางเลือก? แน่นอน คุณอาจจะลงมือทำเองด้วย std::string::iterator
หรือกลับไปใช้ฟังก์ชั่นภาษา C ถ้าคุณชอบความตื่นเต้น เทคนิคที่ทันสมัยกว่าอาจจะเกี่ยวข้องกับ string_views สำหรับการเพียงแค่ดูโดยไม่แก้ไข
การใช้งานภายใน? ภายใต้ผิวหนัง, substr
บ่อยครั้งที่จัดสรรพื้นที่เก็บข้อมูลใหม่และคัดลอกข้อมูล, ซึ่งไม่ใช่ฟรี มันเบากว่าการต่อสู้กับพอยน์เตอร์ดิบและอาร์เรย์ของ char จากสมัยก่อน, แต่มันก็ไม่ใช่ทันที
ดูเพิ่มเติม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ std::string
และเพื่อนๆ:
- cppreference.com เรื่อง
std::string
: https://en.cppreference.com/w/cpp/string/basic_string - ข้อมูลเพิ่มเติมเกี่ยวกับ
std::string_view
: https://en.cppreference.com/w/cpp/string/basic_string_view - การจัดการสตริงแบบภาษา C (สำหรับการย้อนยุค): http://www.cplusplus.com/reference/cstring/