วิธีใช้ฟังก์ชัน substr() ใน C++

How Use Substr Function C



วิธีการตัดส่วนใดส่วนหนึ่งจากสตริงเรียกว่าสตริงย่อย ฟังก์ชั่น substr() มีอยู่ใน C++ เพื่อสร้างสตริงใหม่โดยการตัดส่วนใดส่วนหนึ่งออกจากสตริง NS string.h จำเป็นต้องมีไฟล์ไลบรารีเพื่อใช้ฟังก์ชันนี้ ฟังก์ชันนี้มีสองอาร์กิวเมนต์ อาร์กิวเมนต์แรกมีตำแหน่งเริ่มต้นของสตริงใหม่และอาร์กิวเมนต์ที่สองประกอบด้วยความยาวของสตริง วิธีการใช้ฟังก์ชัน substr() ใน C++ ได้อธิบายไว้ในบทช่วยสอนนี้

ข้อกำหนดเบื้องต้น

ก่อนตรวจสอบตัวอย่างของบทช่วยสอนนี้ คุณต้องตรวจสอบก่อนว่าคอมไพเลอร์ 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++ ใหม่ใช้งานได้อย่างถูกต้องในโค้ดของตน