วิธีใช้คลาสสตริง C++

How Use C String Class



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

คลาสและวัตถุ

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







ชื่อ สตริง เป็นคลาส อ็อบเจ็กต์ที่สร้างจากคลาสสตริงมีชื่อโปรแกรมเมอร์ที่เลือกไว้



จำเป็นต้องใช้ฟังก์ชันที่เป็นของคลาสเพื่อสร้างอินสแตนซ์ของอ็อบเจ็กต์จากคลาส ใน C++ ฟังก์ชันนั้นมีชื่อเดียวกับชื่อของคลาส ออบเจ็กต์ที่สร้าง (ทันที) จากคลาสมีชื่อเรียกต่างกันโดยโปรแกรมเมอร์



การสร้างวัตถุจากคลาสหมายถึงการสร้างวัตถุ มันยังหมายถึงการสร้างอินสแตนซ์





โปรแกรม C++ ซึ่งใช้คลาสสตริง เริ่มต้นด้วยบรรทัดต่อไปนี้ที่ด้านบนของไฟล์:

#รวม
#รวม
ใช้เนมสเปซ std;

บรรทัดแรกเป็นอินพุต/เอาต์พุต บรรทัดที่สองคือการอนุญาตให้โปรแกรมใช้คุณลักษณะทั้งหมดของคลาสสตริง บรรทัดที่สามอนุญาตให้โปรแกรมใช้ชื่อในเนมสเปซมาตรฐาน



โอเวอร์โหลดฟังก์ชัน

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

การก่อสร้าง

สตริง ()
คำสั่งต่อไปนี้สร้างสตริงที่มีความยาวเป็นศูนย์โดยไม่มีอักขระ

สตริง strCol=สตริง();

มันเริ่มต้นด้วยชื่อของคลาส (ประเภทวัตถุ) สตริง ตามด้วยชื่อของสตริงวัตถุที่กำหนดโดยโปรแกรมเมอร์ ผู้ดำเนินการมอบหมายดังต่อไปนี้ จากนั้นชื่อของคอนสตรัคเตอร์ที่มีวงเล็บว่าง ที่นี่ strCol เป็นอ็อบเจ็กต์ที่สร้างอินสแตนซ์ที่มีสมาชิกข้อมูล (คุณสมบัติ) และฟังก์ชันสมาชิก (เมธอด) ทั้งหมด
สตริง (str)
สิ่งนี้คล้ายกับข้างต้น แต่ใช้สตริงตามตัวอักษรหรือตัวระบุเป็นอาร์กิวเมนต์ใน Constructor ข้อความต่อไปนี้แสดงให้เห็นสิ่งนี้:

สตริง strCol=สตริง('ผมรักคุณ');

การก่อสร้างด้วย 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';

ผลลัพธ์คือ:

0
1

การส่งคืน 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 และประเภทการส่งคืน และตัวดัดแปลงสตริง ความเท่าเทียมกันของสตริงและตัวดำเนินการเชิงสัมพันธ์ก็มีอยู่เช่นกัน