คลาสและวัตถุ
คลาสคือชุดของตัวแปรและฟังก์ชันที่ทำงานร่วมกัน โดยที่ตัวแปรไม่มีค่ากำหนดไว้ เมื่อกำหนดค่าให้กับตัวแปร คลาสจะกลายเป็นวัตถุ ค่าต่าง ๆ ที่มอบให้กับคลาสเดียวกันส่งผลให้เกิดอ็อบเจกต์ต่างกัน กล่าวคือ วัตถุต่าง ๆ เป็นคลาสเดียวกันที่มีค่าต่างกัน กล่าวกันว่าการสร้างวัตถุจากคลาสนั้นเป็นการสร้างอินสแตนซ์ของวัตถุ
ชื่อ สตริง เป็นคลาส อ็อบเจ็กต์ที่สร้างจากคลาสสตริงมีชื่อโปรแกรมเมอร์ที่เลือกไว้
จำเป็นต้องใช้ฟังก์ชันที่เป็นของคลาสเพื่อสร้างอินสแตนซ์ของอ็อบเจ็กต์จากคลาส ใน C++ ฟังก์ชันนั้นมีชื่อเดียวกับชื่อของคลาส ออบเจ็กต์ที่สร้าง (ทันที) จากคลาสมีชื่อเรียกต่างกันโดยโปรแกรมเมอร์
การสร้างวัตถุจากคลาสหมายถึงการสร้างวัตถุ มันยังหมายถึงการสร้างอินสแตนซ์
โปรแกรม C++ ซึ่งใช้คลาสสตริง เริ่มต้นด้วยบรรทัดต่อไปนี้ที่ด้านบนของไฟล์:
#รวม#รวม
ใช้เนมสเปซ std;
บรรทัดแรกเป็นอินพุต/เอาต์พุต บรรทัดที่สองคือการอนุญาตให้โปรแกรมใช้คุณลักษณะทั้งหมดของคลาสสตริง บรรทัดที่สามอนุญาตให้โปรแกรมใช้ชื่อในเนมสเปซมาตรฐาน
โอเวอร์โหลดฟังก์ชัน
เมื่อลายเซ็นของฟังก์ชันที่แตกต่างกันตั้งแต่สองรายการขึ้นไปมีชื่อเหมือนกัน แสดงว่าชื่อนั้นโอเวอร์โหลด เมื่อฟังก์ชันหนึ่งถูกเรียกใช้ จำนวนและประเภทของอาร์กิวเมนต์ เป็นตัวกำหนดว่าฟังก์ชันใดที่จะดำเนินการ
การก่อสร้าง
สตริง ()
คำสั่งต่อไปนี้สร้างสตริงที่มีความยาวเป็นศูนย์โดยไม่มีอักขระ
มันเริ่มต้นด้วยชื่อของคลาส (ประเภทวัตถุ) สตริง ตามด้วยชื่อของสตริงวัตถุที่กำหนดโดยโปรแกรมเมอร์ ผู้ดำเนินการมอบหมายดังต่อไปนี้ จากนั้นชื่อของคอนสตรัคเตอร์ที่มีวงเล็บว่าง ที่นี่ strCol เป็นอ็อบเจ็กต์ที่สร้างอินสแตนซ์ที่มีสมาชิกข้อมูล (คุณสมบัติ) และฟังก์ชันสมาชิก (เมธอด) ทั้งหมด
สตริง (str)
สิ่งนี้คล้ายกับข้างต้น แต่ใช้สตริงตามตัวอักษรหรือตัวระบุเป็นอาร์กิวเมนต์ใน Constructor ข้อความต่อไปนี้แสดงให้เห็นสิ่งนี้:
การก่อสร้างด้วย Initializer List
รหัสต่อไปนี้แสดงให้เห็นสิ่งนี้:
สตริง strCol=สตริง({'ผม','','NS','หรือ',วี,'และ','','และ','หรือ','ยู',' 0'});ตัวอักษรสตริงคือฉันรักคุณ สังเกตอักขระ nul ที่ส่วนท้ายของรายการตัวเริ่มต้น
สตริง (str, n)
นี่เป็นการรวบรวมสตริงของอักขระ n ตัวแรกของสตริงอื่น รหัสต่อไปนี้แสดงให้เห็นสิ่งนี้:
charNS[] = 'ผมรักคุณ';สตริง strCol=สตริง(NS, 6);
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือ I love กับ 6 ตัวแรกจากเรื่อง I love you โปรดจำไว้ว่า: ช่องว่างเดียวคืออักขระ
สตริง (str, pos, n)
รูปแบบนี้เป็นคอลเล็กชันสตริงของอักขระ n ตัว โดยเริ่มต้นจากตำแหน่งที่จัดทำดัชนีแบบอิงศูนย์ pos ของสตริงอื่น รหัสต่อไปนี้แสดงให้เห็นสิ่งนี้:
charNS[] = 'ผมรักคุณ';สตริง strCol=สตริง(NS, 2, 4);
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือความรัก
สำหรับสองกรณีข้างต้น ถ้า n มากกว่าขนาดของสตริง ข้อยกเว้น out_of_range จะถูกส่งออกไป – ดูในภายหลัง
สตริง (n, 'c')
สร้างชุดอักขระ n ตัว โดยที่อักขระทั้งหมดเหมือนกัน พิจารณา,
สตริง strCol=สตริง(5,'และ');ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือ eeeee 5 e's
การกำหนดสตริง
สตริงสามารถกำหนดได้ดังนี้ หลังจากที่ได้ประกาศทั้งสองสตริงแล้ว:
สตริง strCol1=สตริง('ผมรักคุณ');สตริง strCol2;
strCol2=strCol1;
ค่าใช้จ่าย<<strCol2<< 'NS';
ผลลัพธ์คือฉันรักคุณ
การสร้างด้วย Iterator
ตัววนซ้ำให้การแสดงทั่วไปของการสแกน ผ่านค่าของคอลเล็กชัน ไวยากรณ์ในการสร้างสตริงด้วย iterator คือ:
แม่แบบ<คลาส InputIterator>basic_string(InputIterator เริ่มต้น,InputIterator สิ้นสุด, constตัวจัดสรร&
ถึง=ตัวจัดสรร());
สิ่งนี้สร้างสตริงสำหรับช่วง [เริ่มต้น, สิ้นสุด) – ดูรายละเอียดในภายหลัง
ทำลายสตริง
หากต้องการทำลายสตริง ก็ปล่อยให้มันอยู่นอกขอบเขต
การเข้าถึงองค์ประกอบคลาสสตริง
ออบเจ็กต์สตริงที่สร้างอินสแตนซ์สามารถย่อย (จัดทำดัชนี) ได้เหมือนกับอาร์เรย์ การนับดัชนีเริ่มจากศูนย์
ชื่อสตริง[i]
การดำเนินการ stringName[i] ส่งกลับการอ้างอิงถึงอักขระ (องค์ประกอบ) ที่iNSดัชนีการรวบรวมตัวละคร รหัสต่อไปนี้ส่งออก v:
สตริง strCol=สตริง('ผมรักคุณ');charch=strCol[4];
ค่าใช้จ่าย<<ch<< 'NS';
stringName[i] const
การดำเนินการ stringName[i] const ถูกดำเนินการแทน stringName[i] เมื่อวัตถุสตริงเป็นวัตถุคงที่ มันถูกใช้ในรหัสต่อไปนี้เช่น:
constสตริง strCol=สตริง('ผมรักคุณ');charch=strCol[4];
ค่าใช้จ่าย<<ch<< 'NS';
นิพจน์ส่งคืนการอ้างอิงคงที่ไปยังiNSองค์ประกอบของวัตถุสตริง องค์ประกอบของสตริงไม่สามารถเปลี่ยนแปลงได้
การกำหนดตัวละครด้วยตัวสมัครสมาชิก
สามารถกำหนดอักขระให้กับวัตถุสตริงที่ไม่คงที่ได้ดังนี้:
สตริง strCol=สตริง('ฉันโทร');strCol[2] = 'NS';
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือฉันตก 'c' เปลี่ยนเป็น 'f'
stringName.at(i)
stringName.at(i) คล้ายกับ stringName[i] แต่ stringName.at(i) มีความน่าเชื่อถือมากกว่า รหัสต่อไปนี้แสดงวิธีการใช้งาน:
สตริง strCol=สตริง('ผมรักคุณ');charch=strColที่(4);
ค่าใช้จ่าย<<ch<< 'NS';
at() เป็นฟังก์ชันสมาชิกคลาสสตริงจริงๆ
stringName.at(i) const
stringName.at(i) const คล้ายกับ stringName[i] const แต่ stringName.at(i) const มีความน่าเชื่อถือมากกว่า stringName.at(i) const ถูกดำเนินการแทน stringName.at(i) เมื่อวัตถุสตริงเป็นวัตถุสตริงคงที่ ใช้ในโค้ดต่อไปนี้ เช่น
constสตริง strCol=สตริง('ผมรักคุณ');charch=strColที่(4);
ค่าใช้จ่าย<<ch<< 'NS';
at() const เป็นฟังก์ชันสมาชิกคลาสสตริง
การกำหนดค่าด้วยฟังก์ชัน at()
สามารถกำหนดค่าให้กับวัตถุสตริงที่ไม่คงที่โดยใช้ฟังก์ชัน at() ดังนี้:
สตริง strCol=สตริง('ฉันโทร');strColที่(2) = 'NS';
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือฉันตก
ปัญหาเกี่ยวกับ Sub-scripting
ปัญหาเกี่ยวกับ sub-scripting (การทำดัชนี) คือ ถ้าดัชนีอยู่นอกช่วง อาจได้รับผลลัพธ์ที่ไม่ถูกต้อง หรืออาจมีการแสดงข้อผิดพลาดในขณะใช้งาน
ด้านหน้า()
ส่งคืนการอ้างอิงไปยังองค์ประกอบแรกของวัตถุสตริงโดยไม่ต้องลบองค์ประกอบ ผลลัพธ์ของรหัสต่อไปนี้คือ 'I'
สตริง strCol=สตริง('ผมรักคุณ');charch=strColด้านหน้า();
ค่าใช้จ่าย<<ch<< 'NS';
อักขระไม่ถูกลบออกจากวัตถุสตริง
front() const
เมื่อการสร้างวัตถุสตริงนำหน้าด้วย const นิพจน์ front() const จะถูกดำเนินการแทน front() มันถูกใช้ในรหัสต่อไปนี้เช่น
constสตริง strCol=สตริง('ผมรักคุณ');charch=strColด้านหน้า();
ค่าใช้จ่าย<<ch<< 'NS';
การอ้างอิงคงที่จะถูกส่งกลับ องค์ประกอบจะไม่ถูกลบออกจากวัตถุสตริง ไม่สามารถเปลี่ยนอักขระสำหรับวัตถุสตริงคงที่ได้
กลับ()
ส่งคืนการอ้างอิงไปยังองค์ประกอบสุดท้ายของวัตถุสตริง โดยไม่ต้องลบองค์ประกอบ ผลลัพธ์ของรหัสต่อไปนี้คือ 'u'
สตริง strCol=สตริง('ผมรักคุณ');charch=strColกลับ();
ค่าใช้จ่าย<<ch<< 'NS';
back() const
เมื่อการสร้างวัตถุสตริงนำหน้าด้วย const นิพจน์ back() const จะถูกดำเนินการแทน back() มันถูกใช้ในรหัสต่อไปนี้เช่น
constสตริง strCol=สตริง('ผมรักคุณ');charch=strColกลับ();
ค่าใช้จ่าย<<ch<< 'NS';
การอ้างอิงคงที่จะถูกส่งกลับ องค์ประกอบจะไม่ถูกลบออกจากวัตถุสตริง
ความจุสตริง
size_type ความจุ () const noexcept
จำนวนอักขระทั้งหมดที่สตริงสามารถเก็บได้โดยไม่ต้องมีการจัดสรรใหม่ ส่งคืนโดยฟังก์ชันสมาชิกความจุนี้ ส่วนรหัสสำหรับสิ่งนี้คือ:
สตริง strCol=สตริง();intหนึ่ง=strColความจุ();
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
ผลลัพธ์คือ 15 บนคอมพิวเตอร์ของฉัน
สำรอง(n)
พื้นที่หน่วยความจำไม่พร้อมใช้งานในร้านค้าฟรีเสมอไป สามารถจองพื้นที่เพิ่มเติมล่วงหน้า พิจารณาส่วนรหัสต่อไปนี้:
สตริง strCol=สตริง('รัก');strColจอง(6);
ค่าใช้จ่าย<<strColความจุ() << 'NS';
ผลลัพธ์คือ 15 บนคอมพิวเตอร์ของฉัน
ขนาด() const noexcept
ส่งคืนจำนวนอักขระในสตริง รหัสต่อไปนี้แสดงให้เห็น:
สตริง strCol=สตริง('ผมรักคุณ');intหนึ่ง=strColขนาด();
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
เอาต์พุตคือ 10 ซึ่งไม่รวม nul, อักขระ
length() const noexcept
-ขนาดเท่ากัน().บันทึก:ขนาด() <=ความจุ().
Shrink_to_fit()
สามารถลดความจุ () เป็น size() โดยทำให้เกิดการจัดสรรใหม่ มันไม่จำเป็น รหัสต่อไปนี้แสดงให้เห็นสิ่งนี้:
สตริง strCol=สตริง('ผมรักคุณ');strColจอง(12);
strColหด_to_fit();
intNS=strColขนาด();
ค่าใช้จ่าย<<NS<< 'NS';
เอาต์พุตคือ 10 ไม่ใช่ 12 หรือ 16 ฟังก์ชันจะคืนค่าเป็นโมฆะ
ปรับขนาด (sz), ปรับขนาด (sz,'c')
สิ่งนี้จะปรับขนาดสตริง หากขนาดใหม่มีขนาดเล็กกว่าขนาดเดิม องค์ประกอบที่อยู่ตรงส่วนท้ายจะถูกลบออก หากขนาดใหม่ยาวขึ้น จะมีการเพิ่มอักขระเริ่มต้นบางตัวในตอนท้าย หากต้องการเพิ่มอักขระเฉพาะ ให้ใช้ฟังก์ชัน resize() ที่มีสองอาร์กิวเมนต์ ส่วนรหัสต่อไปนี้แสดงให้เห็นถึงการใช้สองฟังก์ชัน:
สตริง strCol=สตริง('ผมรักคุณ');strColปรับขนาด(6);
ค่าใช้จ่าย<< 'ขนาดใหม่ของ strCol: ' <<strColขนาด() << 'NS';
สตริง strCol1=สตริง('ฉันรัก', 'และ');
strCol1.ปรับขนาด(12);
ค่าใช้จ่าย<< 'ขนาดใหม่ของ strCol1:' <<strCol1.ขนาด() << 'NS';
ผลลัพธ์คือ:
ขนาดใหม่ของ strCol: 6ขนาดใหม่ของ strCol1: 12
ฟังก์ชันส่งคืนเป็นโมฆะ
clear() ไม่มีข้อยกเว้น
ลบองค์ประกอบทั้งหมดออกจากสตริง ตามที่แสดงส่วนของรหัสต่อไปนี้:
สตริง strCol=สตริง('ผมรักคุณ');strColแจ่มใส();
ค่าใช้จ่าย<<strColขนาด() << 'NS';
ผลลัพธ์คือ 0 ฟังก์ชันจะคืนค่าเป็นโมฆะ
ว่างเปล่า () const noexcept
คืนค่า 1 สำหรับ true หากไม่มีอักขระในวัตถุสตริง หรือ 0 สำหรับ false หากวัตถุสตริงไม่ว่างเปล่า รหัสต่อไปนี้แสดงให้เห็นสิ่งนี้:
สตริง strCol1=สตริง('ผมรักคุณ');ค่าใช้จ่าย<<strCol1.ว่างเปล่า() << 'NS';
สตริง strCol2=สตริง();
ค่าใช้จ่าย<<strCol2ว่างเปล่า() << 'NS';
ผลลัพธ์คือ:
01
การส่งคืน Iterators และคลาสสตริง
ตัววนซ้ำเป็นเหมือนตัวชี้ แต่มีฟังก์ชันการทำงานมากกว่าตัวชี้
เริ่มต้น () ไม่มีข้อยกเว้น
ส่งกลับตัววนซ้ำที่ชี้ไปที่อักขระตัวแรก (องค์ประกอบ) ของวัตถุสตริง เช่นเดียวกับในส่วนโค้ดต่อไปนี้:
สตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::iteratoriter=strColเริ่ม();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์คือ 'ฉัน' สังเกตวิธีการประกาศที่ได้รับ iterator ได้รับการประกาศ ตัววนซ้ำจะถูกยกเลิกการอ้างอิงในนิพจน์การส่งคืนเพื่อรับค่า ในลักษณะเดียวกับที่ตัวชี้ถูกยกเลิกการอ้างอิง
start() const noexcept;
ส่งกลับตัววนซ้ำที่ชี้ไปที่องค์ประกอบแรกของคอลเลกชันวัตถุสตริง เมื่อการสร้างวัตถุนำหน้าด้วย const นิพจน์ begin() const จะถูกดำเนินการแทน start() ภายใต้เงื่อนไขนี้ องค์ประกอบที่เกี่ยวข้องในวัตถุไม่สามารถแก้ไขได้ มันถูกใช้ในรหัสต่อไปนี้เช่น
constสตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::const_iteratoriter=strColเริ่ม();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์คือ 'ฉัน' โปรดทราบว่าครั้งนี้มีการใช้ const_iterator แทนตัววนซ้ำ เพื่อรับตัววนซ้ำที่ส่งคืน
end() noexcept
ส่งกลับตัววนซ้ำที่ชี้ทันทีเกินองค์ประกอบสุดท้ายของวัตถุสตริง พิจารณาส่วนรหัสต่อไปนี้:
สตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::iteratoriter=strColจบ();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์เป็นโมฆะ ซึ่งไม่มีอะไรเลย เนื่องจากไม่มีองค์ประกอบที่เป็นรูปธรรมนอกเหนือจากองค์ประกอบสุดท้าย
end() const noexcept
ส่งกลับตัววนซ้ำที่ชี้ทันทีเกินองค์ประกอบสุดท้ายของวัตถุสตริง เมื่อการสร้างวัตถุสตริงนำหน้าด้วย const นิพจน์ end() const จะถูกดำเนินการแทน end() พิจารณาส่วนรหัสต่อไปนี้:
constสตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::const_iteratoriter=strColจบ();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์เป็นโมฆะ โปรดทราบว่าครั้งนี้มีการใช้ const_iterator แทนตัววนซ้ำ เพื่อรับตัววนซ้ำที่ส่งคืน
การวนซ้ำแบบย้อนกลับ
เป็นไปได้ที่จะมีตัววนซ้ำที่วนซ้ำจากจุดสิ้นสุดจริงจนถึงก่อนองค์ประกอบแรก:
rbegin() ไม่มีข้อยกเว้น
ส่งคืนตัววนซ้ำที่ชี้ไปยังองค์ประกอบสุดท้ายของสตริงที่สร้างอินสแตนซ์อ็อบเจ็กต์ เช่นเดียวกับในส่วนของโค้ดต่อไปนี้:
สตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::reverse_iteratoriter=strColrbegin();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์คือ 'u' สังเกตวิธีการประกาศที่รับตัววนซ้ำแบบย้อนกลับได้รับการประกาศ ตัววนซ้ำจะถูกยกเลิกการอ้างอิงในนิพจน์การส่งคืนเพื่อรับค่า ในลักษณะเดียวกับที่ตัวชี้ถูกยกเลิกการอ้างอิง
rbegin() const noexcept;
ส่งกลับตัววนซ้ำที่ชี้ไปที่องค์ประกอบสุดท้ายของวัตถุสตริง เมื่อการสร้างวัตถุนำหน้าด้วย const นิพจน์ rbegin() const จะถูกดำเนินการแทน rbegin() ภายใต้เงื่อนไขนี้ องค์ประกอบที่เกี่ยวข้องในวัตถุไม่สามารถแก้ไขได้ คุณลักษณะนี้ใช้ในโค้ดต่อไปนี้ ตัวอย่างเช่น
constสตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::const_reverse_iteratoriter=strColrbegin();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์คือ 'u' โปรดทราบว่าครั้งนี้มีการใช้ const_reverse_iterator แทนที่จะใช้เพียง reverse_iterator เพื่อรับตัววนซ้ำที่ส่งคืน
เรนเดอร์ () noexcept
ส่งกลับตัววนซ้ำที่ชี้ก่อนองค์ประกอบแรกของวัตถุสตริง พิจารณาส่วนรหัสต่อไปนี้:
สตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::reverse_iteratoriter=strColทำให้();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์เป็นโมฆะ ซึ่งไม่มีอะไรเลย เนื่องจากไม่มีองค์ประกอบที่เป็นรูปธรรมก่อนองค์ประกอบแรก
แสดงผล () const noexcept
ส่งกลับตัววนซ้ำที่ชี้ก่อนองค์ประกอบแรกของวัตถุสตริง เมื่อการสร้างวัตถุนำหน้าด้วย const นิพจน์ Rend() const จะถูกดำเนินการแทนการrend() พิจารณาส่วนรหัสต่อไปนี้:
constสตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::const_reverse_iteratoriter=strColทำให้();
ค่าใช้จ่าย<< *iter<< 'NS';
ผลลัพธ์เป็นโมฆะ โปรดทราบว่าครั้งนี้มีการใช้ const_reverse_iterator แทนที่จะใช้เพียง reverse_iterator เพื่อรับตัววนซ้ำที่ส่งคืน
ตัวดัดแปลงสตริง
โมดิฟายเออร์ที่แก้ไขอ็อบเจ็กต์สตริง สามารถรับหรือส่งคืนตัววนซ้ำได้
ต่อท้าย
basic_string&โอเปอเรเตอร์+ =(constbasic_string&NS)ผนวกวัตถุสตริงด้านขวากับวัตถุสตริงด้านซ้าย ตัวอย่าง:
สตริง strCol1=สตริง('ฉันรัก');สตริง strCol2=สตริง(' คุณ');
strCol1+ =strCol2;
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์คือฉันรักคุณ อย่าลืมว่า strCol1 += strCol2 เหมือนกับ strCol1 = strCol1+strCol2
basic_string& โอเปอเรเตอร์+=(const charT* s)
ผนวกตัวอักษรสตริงเข้ากับคอลเลกชันอ็อบเจ็กต์สตริง ตัวอย่าง:
สตริง strCol=สตริง('ฉันรัก');strCol+ = ' คุณ';
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ฉันรักคุณ.
basic_string& โอเปอเรเตอร์+=(charT c)
ผนวกอักขระตัวเดียวเข้ากับสตริงอ็อบเจ็กต์ ตัวอย่าง:
สตริง strCol=สตริง('ฉันรักคุณ');strCol+ = 'ยู';
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ฉันรักคุณ.
basic_string& โอเปอเรเตอร์+=(initializer_list)
ผนวกรายการเริ่มต้น ตัวอย่าง:
สตริง strCol=สตริง('ฉันรัก');strCol+ = {'','และ','หรือ','ยู',' 0'};
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ฉันรักคุณ. เป็นการดีเสมอที่จะเพิ่ม nul ที่ส่วนท้ายของรายการตัวเริ่มต้นอักขระ
basic_string& ต่อท้าย (const basic_string& str)
ผนวกอ็อบเจ็กต์สตริงอาร์กิวเมนต์เข้ากับอ็อบเจ็กต์สตริงหลัก ตัวอย่าง:
สตริง strCol1=สตริง('ฉันรัก');สตริง strCol2=สตริง(' คุณ');
strCol1.ผนวก(strCol2);
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: ฉันรักคุณ.
basic_string& ต่อท้าย (const charT* s)
ผนวกอาร์กิวเมนต์ตามตัวอักษรของสตริงต่อท้ายสตริงหลัก ตัวอย่าง
สตริง strCol=สตริง('ฉันรัก');strCol=strColผนวก(' คุณ');
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ฉันรักคุณ.
basic_string& ต่อท้าย (initializer_list)
ผนวกรายการ initializer ซึ่งเป็นอาร์กิวเมนต์ ต่อท้ายสตริงหลัก ตัวอย่าง:
สตริง strCol=สตริง('ฉันรัก');strCol=strColผนวก({'','และ','หรือ','ยู',' 0'});
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ฉันรักคุณ. เป็นการดีเสมอที่จะเพิ่ม nul, อักขระที่ส่วนท้ายของรายการตัวเริ่มต้น
basic_string& ต่อท้าย (size_type n, charT c)
ต่อท้าย n ของอักขระเดียวกัน ตัวอย่าง:
สตริง strCol=สตริง('แท็บ');strCol=strColผนวก(2, 'หรือ');
ค่าใช้จ่าย<<strCol<< 'NS';
เอาท์พุต: ข้อห้าม
basic_string& ต่อท้าย (const charT* s, size_type n)
ผนวกองค์ประกอบ n ตัวแรกของตัวอักษรสตริงเข้ากับอ็อบเจ็กต์สตริงหลัก ตัวอย่าง:
สตริง strCol=สตริง('ฉันรัก');strCol=strColผนวก('คุณดังนั้น', 4);
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือ: ฉันรักคุณ ถ้า n มากกว่าความยาวของตัวอักษร ข้อยกเว้น length_error จะถูกส่งออกไป
basic_string& ต่อท้าย (const basic_string& str, size_type pos, size_type n = npos)
ต่อท้ายอักขระ n ตัวจากดัชนี pos กับสตริงหลัก ตัวอย่าง:
สตริง strCol=สตริง('ฉันรัก');strCol=strColผนวก('คุณเป็นเช่นนั้น', 2, 4);
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ฉันรักคุณ. ข้อยกเว้นจะถูกโยนทิ้งที่นี่ ดูในภายหลัง
การมอบหมาย
basic_string&กำหนด(constbasic_string&NS)กำหนดอ็อบเจ็กต์สตริงอาร์กิวเมนต์ให้กับสตริงหลัก แทนที่เนื้อหาใดๆ ที่มีอยู่
สตริง strCol1=สตริง('ผมรักคุณ');สตริง strCol2=สตริง('เธอต้องการฉัน');
strCol1=strCol1.กำหนด(strCol2);
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: เธอต้องการฉัน
basic_string&กำหนด(constแผนภูมิ*NS)กำหนดอาร์กิวเมนต์ตามตัวอักษรของสตริงให้กับสตริงหลัก แทนที่เนื้อหาใดๆ ที่มีอยู่
สตริง strCol=สตริง('ผมรักคุณ');strCol=strColกำหนด('เธอต้องการฉัน');
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: เธอต้องการฉัน
basic_string&กำหนด(initializer_list<แผนภูมิ>)กำหนดอาร์กิวเมนต์รายการเริ่มต้นให้กับสตริงหลัก,แทนที่เนื้อหาใด ๆ ที่มีอยู่
[ซีซี ลัง='ค'หนี='จริง'ความกว้าง='780']
สตริง strCol=สตริง('ผมรักคุณ');
strCol=strColกำหนด({'NS','ชม','และ','','NS','และ','และ','NS','NS','','NS','และ',' 0'});
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: เธอต้องการฉัน เป็นการดีที่จะเพิ่ม nul เสมอ ที่ท้ายรายการอักขระ เพื่อสร้างสตริงตามตัวอักษร
basic_string&กำหนด(constแผนภูมิ*NS,size_type n)กำหนดอักขระ n ตัวแรกของอาร์กิวเมนต์ตามตัวอักษรสตริงให้กับสตริงหลัก แทนที่เนื้อหาใดๆ ที่มีอยู่
สตริง strCol=สตริง('ผมรักคุณ');strCol=strColกำหนด('เธอต้องการฉัน', 9);
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: เธอต้องการ
basic_string&กำหนด(size_type n,แผนภูมิค)กำหนดอาร์กิวเมนต์ของ n ของอักขระเดียวกันให้กับสตริงหลัก แทนที่เนื้อหาใดๆ ที่มีอยู่
สตริง strCol=สตริง('ผมรักคุณ');strCol=strColกำหนด(4, 'และ');
ค่าใช้จ่าย<<strCol<< 'NS';
เอาท์พุต: eeee
basic_string&กำหนด(constbasic_string&NS,size_type pos,size_type n=นโป้)
กำหนดอักขระ n ตัวของอาร์กิวเมนต์วัตถุสตริง โดยเริ่มจาก pos ถึงสตริงหลัก แทนที่เนื้อหาใดๆ ที่มีอยู่
สตริง strCol=สตริง('ผมรักคุณ');strCol=strColกำหนด('เธอต้องการฉัน', 4, 5);
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ความต้องการ จะโยนข้อยกเว้น - ดูในภายหลัง
การใส่
basic_string&แทรก(size_type pos, constbasic_string&NS)แทรกอาร์กิวเมนต์วัตถุสตริงลงในสตริงหลัก ที่ดัชนี pos
สตริง strCol1=สตริง('ผมรักคุณ');สตริง strCol2=สตริง('เกลียดและ');
strCol1=strCol1.แทรก(2,strCol2);
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: ฉันเกลียดและรักคุณ จะโยนข้อยกเว้น - ดูในภายหลัง
basic_string&แทรก(size_type pos1, constbasic_string&NS,size_type pos2,size_type n=นโป้)
แทรกความยาวของอักขระ n ตัวจาก pos2 ของอาร์กิวเมนต์วัตถุสตริง ไปยังสตริงหลัก ที่ดัชนี pos1
สตริง strCol1=สตริง('ผมรักคุณ');สตริง strCol2=สตริง('เกลียดต้องการและต้องการ');
strCol1=strCol1.แทรก(2,strCol2, 6, 9);
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: ฉันต้องการและรักคุณ
ตัววนซ้ำแทรก (const_iterator p, charT c)
แทรกอักขระเฉพาะ ซึ่งเป็นอาร์กิวเมนต์ ลงในตำแหน่งที่ตัววนซ้ำชี้ไป ส่งกลับตัววนซ้ำสำหรับตำแหน่งของอักขระที่แทรกใหม่
สตริง strCol=สตริง('ผมรักคุณ');basic_string<char> ::iteratoriter=strColเริ่ม();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
basic_string<char> ::iteratorเครือข่าย=strColแทรก(iter, 'NS');
ค่าใช้จ่าย<< *เครือข่าย<< 'NS';
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือ:
'NS'
ฉันรักคุณ
ตัววนซ้ำแทรก (const_iterator p, size_type n, charT c)
แทรก n ของอักขระตัวเดียวกันของอาร์กิวเมนต์ ในตำแหน่ง ชี้ไปที่ตัววนซ้ำ ส่งกลับตัววนซ้ำสำหรับตำแหน่งของจุดเริ่มต้นของอักขระเดียวกันที่แทรกใหม่
สตริง strCol=สตริง('แท็บในแผ่นดิน.');basic_string<char> ::iteratoriter=strColเริ่ม();
++iter; ++iter; ++iter;
basic_string<char> ::iteratorเครือข่าย=strColแทรก(iter, 2, 'หรือ');
ค่าใช้จ่าย<< *เครือข่าย<< 'NS';
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์คือ:
'หรือ'
ข้อห้ามในแผ่นดิน
basic_string&แทรก(size_type pos, constแผนภูมิ*NS)แทรกตัวอักษรสตริงอาร์กิวเมนต์ที่ดัชนี pos ในสตริงหลัก
สตริง strCol=สตริง('แท็บในแผ่นดิน.');strCol=strColแทรก(3, 'อู');
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ข้อห้ามในแผ่นดิน
basic_string&แทรก(size_type pos, constแผนภูมิ*NS,size_type n)แทรกอักขระ n ตัวแรกของตัวอักษรสตริงอาร์กิวเมนต์ ที่ดัชนี pos ในสตริงหลัก
สตริง strCol=สตริง('แท็บในแผ่นดิน.');strCol=strColแทรก(3, 'อู้', 2);
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: ข้อห้ามในแผ่นดิน
การเปลี่ยน
basic_string&แทนที่(size_type pos1,size_type n1, constbasic_string&NS))แทนที่อักขระ n1 ในวัตถุสตริงหลักจากดัชนี pos1 ด้วยวัตถุสตริงอาร์กิวเมนต์
สตริง strCol1=สตริง('ผมรักคุณ');สตริง strCol2=สตริง('เกลียดคุณและ');
strCol1=strCol1.แทนที่(2, 4,strCol2);
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: ฉันเกลียดคุณและคุณ จะโยนข้อยกเว้น - ดูในภายหลัง
basic_string&แทนที่(size_type pos1,size_type n1, constbasic_string&NS,size_type pos2,size_type n2=นโป้)
แทนที่อักขระ n1 ในวัตถุสตริงหลักจากดัชนี pos1 ด้วยอักขระ n2 ของวัตถุสตริงอาร์กิวเมนต์จากดัชนี pos2
สตริง strCol1=สตริง('ผมรักคุณ');สตริง strCol2=สตริง('เราเกลียดเขาและเธอ');
strCol1=strCol1.แทนที่(2, 4,strCol2, 3, 12);
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: ฉันเกลียดเขาและคุณ
basic_string&แทนที่(size_type pos1,size_type n1, constแผนภูมิ*NS,size_type n2)
แทนที่อักขระ n1 ในวัตถุสตริงหลักจากดัชนี pos1 ด้วยอักขระ n2 ตัวแรกของอาร์กิวเมนต์สตริงตามตัวอักษร
สตริง strCol1=สตริง('ผมรักคุณ');strCol1=strCol1.แทนที่(2, 4, 'เกลียดเขาและเธอ', 12);
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: ฉันเกลียดเขาและคุณ
basic_string& แทนที่ (size_type pos, size_type n, const charT* s)
แทนที่อักขระ n ตัวในวัตถุสตริงหลักจาก index, pos ด้วยอาร์กิวเมนต์สตริงตามตัวอักษร
สตริง strCol1=สตริง('ผมรักคุณ');strCol1=strCol1.แทนที่(2, 4, 'เกลียดเขาและ');
ค่าใช้จ่าย<<strCol1<< 'NS';
ผลลัพธ์: ฉันเกลียดเขาและคุณ
basic_string&แทนที่(size_type pos1,size_type n1,size_type n2,แผนภูมิค)แทนที่อักขระ n1 ในวัตถุสตริงหลักจากดัชนี pos1 ด้วย n2 ของอักขระตัวเดียวกันของอาร์กิวเมนต์
สตริง strCol1=สตริง('แท็บเล็ตที่ไม่ดีอยู่ที่นั่น');strCol1=strCol1.แทนที่(9, 3, 2, 'หรือ');
ค่าใช้จ่าย<<strCol1<< 'NS';
เอาท์พุต: ข้อห้ามที่ไม่ดีที่นั่น..
iterator ลบ (const_iterator p)
ลบอักขระที่ตำแหน่งที่ตัววนซ้ำชี้ไป จากนั้นส่งคืนตำแหน่ง iterator ซึ่งขณะนี้ถูกครอบครองโดยอักขระที่อยู่ถัดจากอักขระนี้ (หรือ end()) รหัสต่อไปนี้แสดงให้เห็นสิ่งนี้:
สตริง strCol=สตริง('เอบีซีดี');basic_string<char> ::iteratoriter=strColเริ่ม();
++iter; ++iter;
strColลบ(iter);
ค่าใช้จ่าย<<strCol[0] << '' <<strCol[1] << '
' <<strCol[2]<< 'NS';
ผลลัพธ์: a b d
basic_string&ลบ(size_type pos= 0,size_type n=นโป้)ลบอักขระ n ตัวออกจากดัชนี pos
สตริง strCol=สตริง('เอบีซีดี');strColลบ(1, 2);
ค่าใช้จ่าย<<strCol[0] << '' <<strCol[1] << 'NS';
เอาท์พุท: d
เป็นโมฆะ push_back (charT c)
ในการเพิ่มอักขระตัวเดียวที่ส่วนท้ายของสตริง:
สตริง strCol=สตริง('เอบีซีดี');strColpush_back('5');
ค่าใช้จ่าย<<strCol<< 'NS';
เอาต์พุต: abcd5
เป็นโมฆะ pop_back()
ลบอักขระตัวสุดท้ายโดยไม่ส่งคืน ขนาดของสตริงลดลง 1
สตริง strCol=สตริง('เอบีซี');strColpop_back();
ค่าใช้จ่าย<<strCol<< 'NS';
เอาท์พุต : abcd
โมฆะ swap(basic_string& s)
สามารถเปลี่ยนตัวอักษรของวัตถุสตริงสองรายการได้
สตริง strCol1=สตริง(<ไอดี='โพสต์-69618-__DdeLink__781_3724385525'>ถึง>'เอบีซี');สตริง strCol2=สตริง('1234567');
strCol1.แลกเปลี่ยน(strCol2);
ค่าใช้จ่าย<<strCol1<< 'NS';
ค่าใช้จ่าย<<strCol2<< 'NS';
ผลลัพธ์คือ:
'1234567''เอบีซี'
การดำเนินการสตริง
const charT* c_str() const noexcept
ส่งกลับตัวชี้ไปยังองค์ประกอบแรกของสตริง ตัวชี้สามารถเพิ่มได้
constสตริง strCol=สตริง('เอบีซี');const char*NS=strColc_str();
ค่าใช้จ่าย<< *NS<< 'NS';
++NS;
ค่าใช้จ่าย<< *NS<< 'NS';
ผลลัพธ์คือ:
ถึงNS
เนื่องจาก const ที่สองในส่วนหัว โปรแกรมไม่สามารถเปลี่ยนอักขระใดๆ ในสตริงได้ การก่อสร้างนำหน้าด้วย cons.
const charT* data() const noexcept
ส่งกลับตัวชี้ไปยังองค์ประกอบแรกของสตริง ตัวชี้สามารถเพิ่มได้
constสตริง strCol=สตริง('เอบีซี');const char*NS=strColข้อมูล();
ค่าใช้จ่าย<< *NS<< 'NS';
++NS;
ค่าใช้จ่าย<< *NS<< 'NS';
ผลลัพธ์คือ:
ถึงNS
เนื่องจาก const ที่สองในส่วนหัว โปรแกรมไม่สามารถเปลี่ยนอักขระใดๆ ในสตริงได้ การก่อสร้างนำหน้าด้วย cons.
basic_string substr(size_type pos = 0, size_type n = npos) const
ส่งกลับวัตถุสตริงของอักขระ n สำหรับสตริงย่อยที่เริ่มต้นจากดัชนี pos
constสตริง strCol=สตริง('abcdefghij');constสตริง retStr=strColย่อย(2, 4);
ค่าใช้จ่าย<<retStr<< 'NS';
เอาท์พุต: cdef
find() ฟังก์ชั่นสมาชิก
size_type find(const basic_string& str, size_type pos = 0) const ไม่มีข้อยกเว้น
ค้นหาวัตถุสตริงย่อยที่เริ่มต้นจากดัชนี pos หากพบ จะคืนค่าจุดเริ่มต้นของสตริงย่อยในสตริงหลัก
สตริง strCol=สตริง('เราคือโลก!');สตริง strCol1=สตริง('NS');
intหนึ่ง=strColหา(strCol1, 2);
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
เอาท์พุท:
ดัชนี: 7ส่งกลับ -1 เมื่อไม่พบ
size_type find(const charT* s, size_type pos = 0) const
ค้นหาตัวอักษรสตริงย่อยที่เริ่มต้นจากดัชนี pos หากพบ จะคืนค่าจุดเริ่มต้นของสตริงย่อยในสตริงหลัก
สตริง strCol=สตริง('เราคือโลก!');intหนึ่ง=strColหา('เป็น', 0);
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
เนื่องจาก pos = 0 เป็นค่าเริ่มต้น ดังนั้น 0 ในอาร์กิวเมนต์อาจถูกละเว้น
เอาท์พุต: 3
ส่งกลับ -1 เมื่อไม่พบ
size_type ค้นหา (const charT* s, size_type pos, size_type n) const
ค้นหาอักขระ n ตัวแรกของตัวอักษรสตริงย่อยที่เริ่มต้นจากดัชนี pos หากพบ จะคืนค่าจุดเริ่มต้นของสตริงย่อยในสตริงหลัก
สตริง strCol=สตริง('ลูกชายคนสุดท้อง');intหนึ่ง=strColหา('ใหญ่กว่า', 1, 3);
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
เอาท์พุต: 4
ส่งกลับ -1 เมื่อไม่พบ
size_type find(charT c, size_type pos = 0) const
ค้นหาอักขระ c เริ่มต้นจากดัชนี pos หากพบ จะคืนค่าจุดเริ่มต้นของสตริงย่อยในสตริงหลัก หากไม่พบ ให้คืนค่า -1
สตริง strCol=สตริง('เราคือโลก!');intหนึ่ง=strColหา('กับ');
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
เอาท์พุต: -1
มีฟังก์ชั่นสมาชิก reverse find() ต่อไปนี้:
size_type rfind(constbasic_string&NS,size_type pos=นโป้) constไม่มีข้อยกเว้น;size_type rfind(constแผนภูมิ*NS,size_type pos=นโป้) const;
size_type rfind(constแผนภูมิ*NS,size_type pos,size_type n) const;
size_type rfind(แผนภูมิค,size_type pos=นโป้) const;
ฟังก์ชั่นเปรียบเทียบสมาชิก
int เปรียบเทียบ (const basic_string& str) const noexcept
เปรียบเทียบอ็อบเจ็กต์สตริงอาร์กิวเมนต์กับอ็อบเจ็กต์สตริงหลัก ถ้าสตริงหลักเกิดขึ้นก่อนอาร์กิวเมนต์ (ในพจนานุกรม) จะส่งกลับจำนวนบวก หากเกิดขึ้นหลังสตริงหลัก จะส่งกลับจำนวนลบ หากสตริงทั้งสองเหมือนกัน จะคืนค่าศูนย์
สตริง strCol1=สตริง('ฝูงชน');สตริง strCol2=สตริง('ผู้คน');
intหนึ่ง=strCol1.เปรียบเทียบ(strCol2);
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
เอาท์พุต: -13
int เปรียบเทียบ (const charT* s) const
เหมือนกับข้างบน แต่อาร์กิวเมนต์เป็นสตริงตามตัวอักษร
สตริง strCol1=สตริง('ผู้คน');intหนึ่ง=strCol1.เปรียบเทียบ('ผู้คน');
ค่าใช้จ่าย<<หนึ่ง<< 'NS';
เอาท์พุต: 0
ตัวดำเนินการสตริง
โอเปอเรเตอร์เหล่านี้ใช้ได้กับออบเจ็กต์สตริงและไม่จำเป็นต้องเป็นตัวอักษรสตริง
+
เชื่อมออบเจ็กต์สตริงสองออบเจ็กต์เข้าด้วยกัน และส่งคืนการต่อข้อมูล
สตริง strCol1=สตริง('กำลังเต้นรำ');สตริง strCol2=สตริง(' ดวงจันทร์');
สตริง strCol=strCol1+strCol2;
ค่าใช้จ่าย<<strCol<< 'NS';
ผลลัพธ์: เต้นรำบนดวงจันทร์
==
คืนค่า 1 สำหรับค่าจริง หากวัตถุสตริงเหมือนกัน และศูนย์สำหรับเท็จถ้าไม่ใช่
สตริง strCol1=สตริง('กำลังเต้นรำ');สตริง strCol2=สตริง(' บนดวงจันทร์');
บูล บลู=strCol1==strCol2;
ค่าใช้จ่าย<<บลู<< 'NS';
เอาท์พุต: 0
! =
ส่งกลับค่า 1 หากวัตถุสตริงไม่เหมือนกัน และส่งกลับค่าศูนย์หากเป็นเช่นนั้น
สตริง strCol1=สตริง('กำลังเต้นรำ');สตริง strCol2=สตริง(' บนดวงจันทร์');
บูล บลู=strCol1! =strCol2;
ค่าใช้จ่าย<<บลู<< 'NS';
เอาท์พุต: 1
<
คืนค่า 1 หากตัวถูกดำเนินการทางซ้ายน้อยกว่าตัวถูกดำเนินการทางขวาตามพจนานุกรม หรือคืนค่าเป็นศูนย์หากไม่ใช่
สตริง strCol1=สตริง('กำลังเต้นรำ');สตริง strCol2=สตริง(' บนดวงจันทร์');
บูล บลู=strCol1<strCol2;
ค่าใช้จ่าย<<บลู<< 'NS';
เอาท์พุต: 0
สำหรับอักขระธรรมดาในภาษา C++ เรียงลำดับจากน้อยไปมาก ตัวเลขจะมาก่อนอักษรตัวพิมพ์ใหญ่ ซึ่งมาก่อนอักษรตัวพิมพ์เล็ก อักขระช่องว่างมาก่อนศูนย์และทั้งหมด
ประเภทอักขระสตริงหลัก C++
char
ประเภทอักขระเป็นประเภท C ++ ดั้งเดิมและโดยทั่วไปจะจัดเก็บอักขระใน 8 บิต
char16_t
นี้เก็บอักขระใน 16 บิต
char32_t
สิ่งนี้จะเก็บอักขระใน 32 บิต
wchar_t
char16_t และ char32_t เป็นอักขระแบบกว้าง wchar_t เป็นอักขระแบบกว้างที่เป็นกรรมสิทธิ์และกำหนดการใช้งาน
ประเภทเหล่านี้เรียกว่าลักษณะ อย่างไรก็ตาม C ++ อ้างถึงพวกเขาในทางเทคนิคว่าเป็นความเชี่ยวชาญเฉพาะทาง บทความนี้เน้นที่ประเภทตัวอักษร วิธีการสำหรับประเภทอื่นๆ แตกต่างกันเล็กน้อย – ดูในภายหลัง
ฟังก์ชันสมาชิกการดำเนินการสตริงอื่น ๆ
ลายเซ็นของฟังก์ชันการดำเนินการสตริงอื่นๆ ได้แก่:
size_type find_first_of(constbasic_string&NS,size_type pos= 0) constไม่มีข้อยกเว้น;size_type find_first_of(constแผนภูมิ*NS,size_type pos,size_type n) const;
size_type find_first_of(constแผนภูมิ*NS,size_type pos= 0) const;
size_type find_first_of(แผนภูมิค,size_type pos= 0) const;
size_type find_last_of(constbasic_string&NS,size_type pos=นโป้) constไม่มีข้อยกเว้น;
size_type find_last_of(constแผนภูมิ*NS,size_type pos,size_type n) const;
size_type find_last_of(constแผนภูมิ*NS,size_type pos=นโป้) const;
size_type find_last_of(แผนภูมิค,size_type pos=นโป้) const;
size_type find_first_not_of(constbasic_string&NS,size_type pos= 0) constไม่มีข้อยกเว้น;
size_type find_first_not_of(constแผนภูมิ*NS,size_type pos,size_type n) const;
size_type find_first_not_of(constแผนภูมิ*NS,size_type pos= 0) const;
size_type find_first_not_of(แผนภูมิค,size_type pos= 0) const;
size_type find_last_not_of(constbasic_string&NS,size_type pos=นโป้) constไม่มีข้อยกเว้น;
size_type find_last_not_of(constแผนภูมิ*NS,size_type pos,size_type n) const;
size_type find_last_not_of(constแผนภูมิ*NS,size_type pos=นโป้) const;
size_type find_last_not_of(แผนภูมิค,size_type pos=นโป้) const;
บทสรุป
C++ มีตัวอักษรสตริงและอ็อบเจ็กต์สตริง วัตถุสตริงมีชุดอักขระตามลำดับ คล้ายกับอาร์เรย์ของอักขระตามลำดับ ความแตกต่างระหว่างคอลเลคชันสตริงและอาร์เรย์คือ คอลเลคชันสตริงสามารถขยายความยาวหรือลดความยาวได้ วัตถุสตริงถูกสร้างอินสแตนซ์ (สร้าง) จากคลาสสตริง วัตถุสตริงคือโครงสร้างข้อมูลที่มีฟังก์ชันสมาชิก ฟังก์ชันสมาชิกสามารถจำแนกได้ภายใต้ส่วนหัวของการสร้างอ็อบเจ็กต์ การเข้าถึงองค์ประกอบ ความจุสตริง ฟังก์ชันสมาชิกของสตริงที่มีอาร์กิวเมนต์ iterator และประเภทการส่งคืน และตัวดัดแปลงสตริง ความเท่าเทียมกันของสตริงและตัวดำเนินการเชิงสัมพันธ์ก็มีอยู่เช่นกัน