บทสรุป
บทช่วยสอนสั้นนี้เป็นภาพรวมของฟังก์ชัน at() ของคลาส String ใน C++ เพื่อเข้าถึงลำดับตัวอักษรจากสตริง ในส่วนต่อไป ผู้อ่านจะได้เห็นตัวอย่างการเขียนโปรแกรมคลาส String เพื่อทำความเข้าใจการใช้งานฟังก์ชัน at() อย่างลึกซึ้ง
คลาส String
ในทางการเขียนโปรแกรม สตริงเป็นการแสดงผลด้วยเครื่องหมายคำพูดคู่ ซึ่งประกอบด้วยชุดของตัวอักษร คลาส String เป็นคลาสคอนเทนเนอร์ที่สามารถวนลูปผ่านตัวอักษรทั้งหมดโดยใช้ตัวดำเนินการ [] นอกจากนี้ คลาส String ยังจัดการการดำเนินการเกี่ยวกับหน่วยความจำและการสิ้นสุดด้วย null อัตโนมัติ สามารถดำเนินการเกี่ยวกับสตริงได้มากมาย เช่น การเปรียบเทียب, การคัดลอก, การต่อสตริง, การค้นหา, การเรียงลำดับ และอื่นๆ โดยใช้ฟังก์ชันสำคัญของมัน ซึ่งหนึ่งในนั้นคือเมธอด at() ที่ใช้สำหรับดึงตัวอักษรจากตำแหน่งเฉพาะในสตริง
เมธอด String.at()
เมธอด at() ของคลาส String ถูกออกแบบมาเพื่อเข้าถึงตัวอักษรเฉพาะที่อยู่ในสตริง มันจะตรวจสอบโดยอัตโนมัติว่า pos เป็นตำแหน่งที่ถูกต้องของตัวอักษรในสตริงที่กำหนดหรือไม่ มิฉะนั้นจะโยนข้อยกเว้น "out_of_range" การใช้งานไวยากรณ์มีดังนี้
ไวยากรณ์
char& at (size_type id); const char& at (size_t pos) const;
โปรแกรม C++ ต่อไปนี้แสดงการใช้งานเมธอด at() ของคลาส String โดยโปรแกรมจะหาความยาวของสตริงนำเข้าก่อน แล้วเมธอด at() จะดึงตัวอักษรเฉพาะจากตำแหน่งที่กำหนดในสตริง
ตัวอย่าง
#include <iostream> using namespace std; void retrieveChar(string str) { char chr; // คำนวณความยาวของสตริง int len = str.length(); // ดึงตัวอักษร for (int i = 0; i < len; i++) { chr = str.at(i); cout << chr << " "; } } int main() { retrieveChar("ajaykumar"); return 0; }ตามที่เห็นในโค้ดข้างต้น โค้ดการดำเนินการสตริงทั้งหมดถูกรวมอยู่ในเมธอด retrieveChar() ซึ่งต่อมาถูกเรียกใช้ในฟังก์ชัน main() หลังจากคอมไพล์ไฟล์ example.CPP เรียบร้อยแล้ว จะได้ผลลัพธ์ดังนี้ ซึ่งตัวอักษรจากสตริงนำเข้าถูกเข้าถึงตามลำดับโดยเมธอด at() ของคลาส String
a j a y k u m a r
หมายเหตุด้านความปลอดภัย
สตริงที่รับเข้ามาจากแหล่งต่างๆ เป็นเรื่องที่นักความปลอดภัยใส่ใจ เพราะอาจให้วิธีการเปลี่ยนแปลงพฤติกรรมเริ่มต้นและผลลัพธ์ของโปรแกรมได้ นักแฮ็กเกอร์มักใช้ช่องโหว่ในการแสดงสตริงเพื่อทำลายโปรแกรม จึงควรมีมาตรการและแนวทางที่เหมาะสมเกี่ยวกับสตริงในโปรแกรมเพื่อป้องกันภัยคุกคาม
สรุป
เราได้ศึกษาลึกลงไปในคลาส String และเมธอดหลัก at() พร้อมไวยากรณ์การใช้งานสำหรับการเข้าถึงตัวอักษรจากสตริงแบบลำดับในโค้ดตัวอย่างข้างต้น สุดท้ายเราได้สัมผัสถึงช่องโหว่และการแสดงสตริงที่อ่อนแอซึ่งมักนำไปสู่การโจมตี เช่น การล้นบัฟเฟอร์, cross-site scripting, format string, canonicalization และบั๊กอื่นๆ ที่สำคัญ