ทุกสิ่งที่คุณต้องการรู้เกี่ยวกับ Strings ใน C ++



บทความนี้จะให้ความรู้เกี่ยวกับ Strings ใน C ++ โดยละเอียดและครอบคลุมและยังให้ตัวอย่างการดำเนินการต่างๆ

ระยะ หมายถึงลำดับของอักขระ ลำดับของอักขระสามารถแสดงโดยใช้ออบเจ็กต์ของคลาสใน C ++ คลาสที่ให้คำจำกัดความในการทำเช่นนั้นเรียกว่าคลาส String คลาสสตริงจะจัดเก็บอักขระตามลำดับของไบต์พร้อมฟังก์ชันการอนุญาตให้เข้าถึงอักขระไบต์เดี่ยว ใน C ++ ตัวคั่นล้อมรอบคือเครื่องหมายคำพูดคู่ ในบทความ“ Strings in C ++” นี้ฉันจะพูดถึงหัวข้อต่อไปนี้:

ความแตกต่างของคลาสสตริงและอาร์เรย์อักขระ

คลาสสตริง อาร์เรย์อักขระ
คลาสสตริงเป็นคลาสที่กำหนดอ็อบเจ็กต์ที่สามารถแสดงเป็นสตรีมของอักขระอาร์เรย์อักขระเป็นเพียงอาร์เรย์ของอักขระ
ในกรณีของสตริงหน่วยความจำจะถูกจัดสรรแบบไดนามิกดังนั้นจึงสามารถจัดสรรหน่วยความจำได้มากขึ้นในขณะทำงานตามความต้องการต้องจัดสรรขนาดของอาร์เรย์อักขระแบบคงที่ดังนั้นจึงไม่สามารถจัดสรรหน่วยความจำได้มากขึ้นในขณะรันหากจำเป็น
คลาสสตริงกำหนดฟังก์ชันจำนวนหนึ่งที่อนุญาตให้มีการดำเนินการมากมายบนสตริงอาร์เรย์อักขระไม่มีฟังก์ชันในตัวมากมายเพื่อจัดการกับสตริง
สตริงช้ากว่าเมื่อเปรียบเทียบกับการนำไปใช้งานมากกว่าอาร์เรย์อักขระการใช้อาร์เรย์อักขระคือ เร็วขึ้น

ประกาศและเริ่มต้นสตริงใน C ++

strings-in-c++การเริ่มต้นสตริงใน C ++ นั้นค่อนข้างง่าย!. เราสามารถใช้วิธีใดวิธีหนึ่งดังต่อไปนี้





ใช้สตริงเนมสเปซ std std_string

หรือ

std :: สตริง std_string
# รวมการใช้เนมสเปซ std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

เอาท์พุต:



สวัสดีโดย ch สวัสดีโดย st สวัสดีโดย std_st

ในตัวอย่างนี้เราได้แสดงทั้งอาร์เรย์อักขระ (ch) และสตริง clวิธีการเริ่มต้น ass (st และ std_st) ขั้นแรกเราใช้วิธีการอาร์เรย์อักขระโดยกำหนดอักขระอาร์เรย์ ch [12] ซึ่งประกอบด้วย 12 องค์ประกอบและสิ้นสุดด้วยอักขระว่าง ในส่วนที่สองเราใช้วิธีคลาสสตริง

การดำเนินการกับสตริงใน C ++

ข้อดีของการใช้คลาสสตริงคือมีฟังก์ชันในตัวมากมายใน C ++ เพื่อจัดการกับฟังก์ชันเหล่านี้ ทำให้การเขียนโปรแกรมทำได้ง่ายและมีประสิทธิภาพ ให้เราใช้ฟังก์ชันการปรับแต่งสตริงที่สำคัญและทำความเข้าใจโดยดูตัวอย่างบางส่วน

ขนาดสตริง: สามารถใช้ทั้งวิธีการ size () และ length () เพื่อส่งกลับขนาดของวัตถุ



ค่าใช้จ่าย<< st.length() <

เอาท์พุต:

11 11

การต่อสตริง: เราสามารถเชื่อมสตริงตั้งแต่สองสตริงขึ้นไปได้ง่ายๆโดยใช้ตัวดำเนินการ + ระหว่างสตริงเหล่านั้น

สตริง new_string = st + 'และ' + std_st cout<< new_string <

เอาท์พุต:

สวัสดีโดย st และสวัสดีโดย std_st

ต่อท้ายสตริง: ฟังก์ชันสมาชิกคลาส. append (string) สามารถใช้เพื่อเชื่อมต่อและต่อท้ายสตริงที่ตำแหน่งอักขระเฉพาะในสตริง หากโปรแกรมเมอร์ใส่ str.append (str1, p, n) หมายความว่าจำนวนอักขระจากตำแหน่ง p ในสตริง str1 จะต่อท้าย str

string str = 'ฉันสนุกกับการเรียนรู้' string str1 = 'Python, C ++ หรือ C' str.append (str1, 8, 3) cout<< str << endl

เอาท์พุต:

ฉันสนุกกับการเรียนรู้ C ++

การค้นหาสตริง: เราสามารถใช้ฟังก์ชันสมาชิก find () เพื่อค้นหาสตริงที่เกิดขึ้นครั้งแรกในอีกสตริง find () จะมองหาเข็มสตริงภายในกองฟางโดยเริ่มจากตำแหน่ง pos และคืนตำแหน่งของเข็มที่เกิดขึ้นครั้งแรก ฟังก์ชัน rfind () ทำงานในลักษณะเดียวกันยกเว้นว่าจะส่งกลับการเกิดครั้งสุดท้ายของสตริงที่ส่งผ่าน

string haystack = 'สวัสดีชาวโลก' เข็มสตริง = 'o' cout<< haystack.find(needle)<

เอาท์พุต:

4 4 7 4294967295

คำสั่ง cout แรกจะพิมพ์“ 4” ซึ่งเป็นดัชนีของการเกิดครั้งแรกของ“ o” ในสตริงกองหญ้า หากเราต้องการให้ 'o' อยู่ใน 'โลก' เราจำเป็นต้องแก้ไข 'pos' เพื่อชี้ให้พ้นเหตุการณ์แรก haystack.find (เข็ม, 4) จะคืนค่า 4 อีกครั้งในขณะที่ haystack.find (เข็ม, 5) จะให้ 7 หากไม่พบสตริงย่อยให้ค้นหา () ส่งคืนค่า std :: string :: npos

Npos เป็นค่าพิเศษที่เท่ากับค่าสูงสุดที่แสดงโดยชนิด size_type นี่คือ 4294967295 โดยทั่วไปจะใช้เป็นจุดสิ้นสุดของตัวบ่งชี้สตริงโดยฟังก์ชันที่คาดว่าจะมีดัชนีสตริงหรือเป็นตัวบ่งชี้ข้อผิดพลาดโดยฟังก์ชันที่ส่งคืนดัชนีสตริง

แปลงไบนารีเป็นจาวาทศนิยม

รหัสง่ายๆนี้ค้นหาสตริงสำหรับการเกิด“ C ++” ทั้งหมดใน str2 และพิมพ์ตำแหน่ง:

string str2 = 'C ++ เป็นภาษาการเขียนโปรแกรมเชิงวัตถุและรวมถึงคลาสการสืบทอดความแตกต่างของข้อมูลและการห่อหุ้ม C ++ อนุญาตให้มีการจัดการข้อยกเว้นและการโอเวอร์โหลดฟังก์ชันซึ่งเป็นไปไม่ได้ใน C C ++ เป็นภาษาที่ทรงพลังมีประสิทธิภาพและรวดเร็ว ' สำหรับ (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

เอาท์พุต:

พบการเกิดของ 'C ++' ที่ตำแหน่ง 0 พบการเกิด 'C ++' ที่ตำแหน่ง 132 พบการเกิด 'C ++' ที่ตำแหน่ง 217
#include ใช้ namespace std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // การผูกล่าช้า (RTP) ptr-> fun_3 () // การโยงล่าช้า (RTP) ptr-> fun_4 () // การเชื่อมโยงก่อน แต่การเรียกฟังก์ชันนี้ // ผิดกฎหมาย (สร้างข้อผิดพลาด) เนื่องจากตัวชี้ // คือ ประเภทฐานและฟังก์ชันเป็นของ // คลาสที่ได้รับ // p-> fun_4 (5)}

เอาท์พุต:

ฟังก์ชันคลาสฐาน 1 ฟังก์ชันคลาสที่ได้รับ 2 ฟังก์ชันคลาสพื้นฐาน 3 ฟังก์ชันคลาสพื้นฐาน 4

ด้วยเหตุนี้เราจึงสิ้นสุดบทความนี้เกี่ยวกับสตริงใน C ++ ฉันหวังว่าคุณจะเข้าใจเกี่ยวกับการดำเนินการต่างๆที่สามารถดำเนินการได้ หากคุณต้องการเรียนรู้เพิ่มเติมโปรดดู Java Training โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ Edureka’s หลักสูตรการฝึกอบรมและการรับรองได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด