ข้อกำหนดเบื้องต้น
ก่อนตรวจสอบตัวอย่างของบทช่วยสอนนี้ คุณต้องตรวจสอบก่อนว่าคอมไพเลอร์ g++ ติดตั้งหรือไม่อยู่ในระบบ หากคุณกำลังใช้ Visual Studio Code ให้ติดตั้งส่วนขยายที่จำเป็นเพื่อคอมไพล์ซอร์สโค้ด C++ เพื่อสร้างโค้ดที่เรียกใช้งานได้ ที่นี่ แอปพลิเคชัน Visual Studio Code ถูกใช้เพื่อคอมไพล์และรันโค้ด C++
ไวยากรณ์
สตริงย่อย (size_t pos = 0, size_t len = npos) const;
ในที่นี้ อาร์กิวเมนต์แรกมีตำแหน่งเริ่มต้นจากตำแหน่งที่จะเริ่มต้นสตริงย่อย และอาร์กิวเมนต์ที่สองประกอบด้วยความยาวของสตริงย่อย ฟังก์ชันจะส่งคืนสตริงย่อยหากระบุตำแหน่งเริ่มต้นและความยาวที่ถูกต้อง การใช้งานต่างๆ ของฟังก์ชันนี้ได้แสดงไว้ในส่วนถัดไปของบทช่วยสอนนี้
ตัวอย่างที่ 1: การใช้ substr() อย่างง่าย
ตัวอย่างต่อไปนี้แสดงการใช้ฟังก์ชัน substr() ที่ธรรมดาที่สุด สร้างไฟล์ C++ ด้วยรหัสต่อไปนี้เพื่อสร้างสตริงย่อยจากค่าสตริง สตริงของคำหลายคำถูกกำหนดให้เป็นตัวแปรสตริง ถัดไป ตำแหน่งเริ่มต้นที่ถูกต้องและความยาวของสตริงย่อยมีค่าอาร์กิวเมนต์ของฟังก์ชัน substr() ทั้งสตริงดั้งเดิมและสตริงย่อยจะถูกพิมพ์หลังจากรันโค้ด
//รวมไลบรารีที่จำเป็น
#รวม
#รวม
intหลัก() {
//กำหนดตัวแปรสตริง
ชั่วโมง::สตริงต้นฉบับstr='ยินดีต้อนรับสู่ Linuxhint';
//ตัดสตริงย่อยโดยใช้ substr()
ชั่วโมง::สตริงข่าวสาร=ต้นฉบับstr.ย่อย (สิบเอ็ด,9);
//พิมพ์สตริงเดิม
ชั่วโมง::ค่าใช้จ่าย <<'สตริงเดิมคือ:' <<ต้นฉบับstr<< 'NS';
//พิมพ์สตริงย่อย
ชั่วโมง::ค่าใช้จ่าย <<'สตริงย่อยคือ:' <<ข่าวสาร<< 'NS';
กลับ 0;
}
เอาท์พุท:
ตามรหัสสตริงเดิมคือ ' ยินดีต้อนรับสู่ LinuxHint '. 11 กำหนดให้เป็นตำแหน่งเริ่มต้นของสตริงย่อยที่เป็นตำแหน่งของอักขระ 'L' และ 9 กำหนดให้เป็นค่าความยาวของสตริงย่อย ' Linuxคำแนะนำ ' ได้กลับมาเป็นผลลัพธ์ของฟังก์ชัน substr() หลังจากรันโค้ด
ตัวอย่างที่ 2: การใช้ substr() ตามตำแหน่งของสตริงเฉพาะ
รหัสต่อไปนี้จะสร้างสตริงย่อยหลังจากค้นหาตำแหน่งของสตริงนั้นๆ สร้างไฟล์ C++ ด้วยรหัสต่อไปนี้เพื่อทดสอบรหัส ค่าสตริงของคำหลายคำถูกกำหนดไว้ในโค้ด ถัดไป ตำแหน่งของสตริงเฉพาะจะถูกค้นหาในสตริงหลักโดยใช้ฟังก์ชัน find() ฟังก์ชัน substr() ถูกใช้เพื่อสร้างสตริงย่อยโดยเริ่มจากจุดเริ่มต้นของสตริงจนถึงค่าตำแหน่งที่ฟังก์ชัน find() จะส่งคืน
//รวมไลบรารีที่จำเป็น#รวม
#รวม
โดยใช้ เนมสเปซชั่วโมง;
intหลัก()
{
ชั่วโมง::สตริงstrData= 'ฉันชอบการเขียนโปรแกรม C++';
// หาตำแหน่งของ '--' โดยใช้ str.find()
intตำแหน่ง=strDataหา('การเขียนโปรแกรม');
// เราจะได้ substring มาจนถึงรูปแบบนี้
ชั่วโมง::สตริงข่าวสาร=strDataย่อย(0, ตำแหน่ง);
ชั่วโมง::ค่าใช้จ่าย <<strData<< 'NS';
ชั่วโมง::ค่าใช้จ่าย <<ข่าวสาร<< 'NS';
กลับ 0;
}
เอาท์พุท:
ตามรหัสค่าสตริงหลักคือ ฉันชอบเขียนโปรแกรม C++ และค่าของสตริงการค้นหาคือ ' การเขียนโปรแกรม' ที่มีอยู่ในสายหลัก ดังนั้นผลลัพธ์คือ ' ฉันชอบ C++ ' หลังจากรันโค้ด
ตัวอย่างที่ 3: การใช้ substr() พร้อมการจัดการข้อยกเว้น
ฟังก์ชัน substr() ถูกใช้โดยมีข้อยกเว้นในการจัดการโค้ดต่อไปนี้ ข้อยกเว้นจะถูกสร้างขึ้นหากมีการกำหนดตำแหน่งเริ่มต้นที่ไม่ถูกต้องในฟังก์ชัน substr() สร้างไฟล์ C++ ด้วยรหัสต่อไปนี้เพื่อทดสอบรหัส ในบล็อกการลอง ค่าสตริงของคำหนึ่งคำถูกกำหนด และตำแหน่งเริ่มต้นที่ไม่ถูกต้องถูกใช้ในฟังก์ชัน substr() ที่จะทำให้เกิดข้อยกเว้นและพิมพ์ข้อความแสดงข้อผิดพลาด
//รวมไลบรารีที่จำเป็น#รวม
#รวม
intหลัก() {
ลอง{
//กำหนดตัวแปรสตริง
ชั่วโมง::สตริงต้นฉบับstr='ลินุกซ์ชิน';
//ตัดสตริงย่อยโดยใช้ substr()
ชั่วโมง::สตริงข่าวสาร=ต้นฉบับstr.ย่อย (สิบเอ็ด,9);
//พิมพ์สตริงย่อย
ชั่วโมง::ค่าใช้จ่าย <<'สตริงย่อยคือ:' <<ข่าวสาร<< 'NS';
}
จับ (constชั่วโมง::ไม่อยู่ในขอบเขต) {
ชั่วโมง::cerr << 'ตำแหน่งอยู่นอกขอบเขตNS';
}
กลับ 0;
}
เอาท์พุท:
ตามรหัสค่าสตริงหลักคือ Linuxคำแนะนำ และค่าของตำแหน่งเริ่มต้นคือ 11 ที่ไม่มีอยู่ ดังนั้น ข้อยกเว้นจึงถูกสร้างขึ้น และมีการพิมพ์ข้อความแสดงข้อผิดพลาดหลังจากรันโค้ด
ตัวอย่างที่ 4: การใช้ substr() เพื่อแยกสตริง
ตัวอย่างต่อไปนี้แสดงการใช้ฟังก์ชัน substr() เพื่อแยกสตริงตามตัวคั่น ฟังก์ชัน find() ถูกใช้เพื่อค้นหาตำแหน่งตัวคั่น และฟังก์ชัน Erase() ถูกใช้เพื่อลบสตริงที่แยกออกด้วยตัวคั่นจากสตริงหลัก วง 'while' ใช้เพื่อค้นหาตำแหน่งทั้งหมดของตัวคั่นในสตริงหลักและเก็บค่าที่แยกไว้ในอาร์เรย์เวกเตอร์ ถัดไป ค่าของอาร์เรย์เวกเตอร์ถูกพิมพ์
//รวมไลบรารีที่จำเป็น#รวม
#รวม
#รวม
intหลัก(){
//กำหนดสตริง
ชั่วโมง::สตริงstringData= 'PHP:C++:หลาม:';
//กำหนดตัวคั่น
ชั่วโมง::สตริงตัวคั่น= ':';
//ประกาศตัวแปรเวกเตอร์
ชั่วโมง::เวกเตอร์ภาษา{};
//ประกาศตัวแปรจำนวนเต็ม
intตำแหน่ง;
//ประกาศตัวแปรสตริง
ชั่วโมง::สตริงoutstr;
/ *
แยกสตริงโดยใช้ฟังก์ชัน substr()
และเพิ่มคำที่แยกออกเป็นเวกเตอร์
* /
ในขณะที่ ((ตำแหน่ง=ข้อมูลสตริงหา(ตัวคั่น)) !=ชั่วโมง::สตริง::นโป้) {
ภาษาpush_back(ข้อมูลสตริงย่อย(0, ตำแหน่ง));
ข้อมูลสตริงลบ(0, ตำแหน่ง+ตัวคั่นระยะเวลา());
}
//พิมพ์คำที่แยกออกมาทั้งหมด
สำหรับ (const รถยนต์ &outstr:ภาษา) {
ชั่วโมง::ค่าใช้จ่าย <<outstr<<ชั่วโมง::endl;
}
กลับ 0;
}
เอาท์พุท:
ตามรหัส ค่าสตริงหลักคือ PHP:C++:Python และค่าของตัวคั่นคือ ‘ : ' . ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ข้างต้น
บทสรุป
วัตถุประสงค์หลักของการใช้ฟังก์ชัน substr() คือการดึงสตริงย่อยจากสตริงโดยกล่าวถึงตำแหน่งเริ่มต้นและความยาวของสตริงย่อย การใช้งานต่างๆ ของฟังก์ชันนี้ได้อธิบายไว้ในบทช่วยสอนนี้โดยใช้ตัวอย่างหลายตัวอย่างเพื่อช่วยให้ผู้ใช้ C++ ใหม่ใช้งานได้อย่างถูกต้องในโค้ดของตน