ตัวอักษรตัวอักษร
ตัวอักษรตามตัวอักษรคืออักขระในเครื่องหมายคำพูดเดี่ยว ดังนั้น,
charident1= 'ถึง'; charident2= 'NS'; charident3= '4'; charident4= '6';
เป็นคำจำกัดความของอักขระที่แตกต่างกันทั้งหมด โปรดทราบว่าตัวเลขในเครื่องหมายคำพูดเดี่ยวเป็นอักขระ ไม่ใช่จำนวนเต็ม
ลำดับหลีก เช่น (ดูด้านล่าง) ในเครื่องหมายคำพูดเดี่ยว เป็นอักขระ ดังนั้น,
charident1= '' ';
เป็นตัวละคร
สัญลักษณ์เดียวในเครื่องหมายคำพูดคู่ไม่ใช่อักขระ มันเป็นสตริงของอักขระหนึ่งตัว ดังนั้น A หรือ c หรือ 2 ไม่ใช่อักขระ แต่เป็นสตริงของอักขระแต่ละตัว
ตัวแปรของ char สามารถกำหนดใหม่ได้ภายหลังในโปรแกรมดังนี้:
charตัวตน= 'NS';
ตัวตน= 'และ';
หากต้องการหยุดการเปลี่ยนแปลงอักขระที่กำหนดให้กับตัวระบุ ภายหลังในโปรแกรม ให้นำหน้าคำจำกัดความด้วยคำสงวน const ดังนี้:
const charตัวตน= 'NS';ตัวแปร ident ถูกกล่าวว่าเป็นแบบอ่านอย่างเดียว
ตัวอักษรสตริง
สตริงตามตัวอักษรคือลำดับของอักขระในเครื่องหมายคำพูดคู่ ดังนั้น,
charident1[] = 'ผมรักคุณ'; charident2[] = 'ฉันเกลียดคุณ 3 คน'; charident3[]= 'เราคือโลก'; charident4[] = 'สวัสดีชาวโลก!';
เป็นคำจำกัดความที่แตกต่างกันของตัวอักษรสตริง สังเกตการใช้เครื่องหมายคำพูดคู่ ไม่มีอะไรที่เหมือนกับตัวแปรธรรมดาสำหรับสตริง ลิเทอรัลสตริงคืออาร์เรย์ของอักขระ ซึ่งแทนที่จะคั่นด้วย {} ลำดับจะถูกคั่นด้วย อักขระไม่ได้คั่นด้วยเครื่องหมายจุลภาค จำนวนใดๆ ที่มากกว่าจำนวนอักขระในสตริงตามตัวอักษร สามารถใส่ลงในวงเล็บเหลี่ยมได้ อย่างไรก็ตาม ควรเว้นวงเล็บเหลี่ยมว่างไว้
อักขระตัวเดียวในเครื่องหมายคำพูดคู่ไม่ใช่อักขระ มันเป็นสตริงของอักขระหนึ่งตัว ดังนั้น A หรือ c หรือ 2 ไม่ใช่อักขระ แต่เป็นสตริงของอักขระแต่ละตัว
ตัวแปรสตริงไม่อนุญาตให้มีการกำหนดตัวอักษรที่สมบูรณ์ใหม่อีกครั้งในโปรแกรม - ดูด้านล่าง อย่างไรก็ตาม อักขระแต่ละตัวสามารถกำหนดใหม่ได้ – ดูด้านล่าง
อ้างเดี่ยวและคู่ในตัวอักษรหรือตามตัวอักษร
หากต้องการมีเครื่องหมายคำพูดเดียวเป็นอักขระ ให้ทำดังนี้
charตัวตน= ' '';หากต้องการให้มีเครื่องหมายอัญประกาศคู่เป็นอักขระในสตริงตามตัวอักษร ให้ทำดังนี้
charตัวตน[] = 'ห่างออกไป'ซีดี';แบ็กสแลชใช้ในลำดับหลีกเพื่อหลีกเลี่ยงความขัดแย้งกับตัวคั่น ในการมีเครื่องหมายอัญประกาศคู่เป็นอักขระ ไม่จำเป็นต้องใส่แบ็กสแลช: ‘‘ ไม่เป็นไร ในการมีอัญประกาศเดี่ยวในสตริงตามตัวอักษร ไม่จำเป็นต้องมีแบ็กสแลช:ab'cd ไม่เป็นไร
เนื่องจากแบ็กสแลชใช้เพื่อ Escape อักขระ จึงต้องมีการ Escape กับแบ็กสแลชอื่นเมื่อใช้เป็นอักขระหรือในสตริงตามตัวอักษร
ลำดับการหลบหนี
ลำดับการหลบหนีเป็นหนึ่งใน:
''? \ ถึง NS NS NS NS>NS vโดยปกติ Escape Sequence แต่ละลำดับจะพิมพ์เป็นอักขระภายในเครื่องหมายคำพูดเดี่ยวหรือเป็นลำดับ Escape ภายในเครื่องหมายคำพูดคู่
- ' : ใช้เป็นอักขระอัญประกาศเดี่ยวภายในเครื่องหมายอัญประกาศเดี่ยว
- : ใช้เป็นอักขระอัญประกาศคู่ ภายในตัวอักษร
- ? : ตั้งแต่ ? เป็นอักขระที่สงวนไว้ ควรหลีกเลี่ยงตามตัวอักษร
- \ : แบ็กสแลชควรหลีกเลี่ยงเป็นอักขระหรือในสตริงตามตัวอักษร เพื่อไม่ให้เกิดความหมายอื่น
- a : ส่งเสียงกริ่งเตือนหนึ่งครั้ง เมื่อใช้เป็นอักขระหรืออยู่ภายในตัวอักษรสตริง
- : ผลลัพธ์เป็นแบ็คสเปซในการแสดงผลภายในสตริงตามตัวอักษร โดยนำอักขระก่อนหน้าออก
- f : ทำให้หน้าถัดไปถูกป้อนไปยังเครื่องพิมพ์เมื่อใช้เป็นอักขระหรือภายในตัวอักษร
- : ส่งคืนเคอร์เซอร์ ซึ่งจะพิมพ์อักขระตัวถัดไป แต่อยู่ภายในบรรทัดปัจจุบัน
- : ส่งคืนเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดถัดไปหรือเพียงแค่ไปยังบรรทัดถัดไป ขึ้นอยู่กับระบบปฏิบัติการ
- : สร้างแท็บแนวนอน
- v : สร้างแท็บแนวตั้ง
การดำเนินการกับตัวละคร
การต่อกัน
ที่นิยาม ลิเทอรัลสตริงสองตัวสามารถเชื่อมกับช่องว่างได้ดังนี้:
charตัวตน[] = 'เอบีซี' 'def';ค่าใช้จ่าย<<ตัวตน<< 'NS';
ผลลัพธ์คือ: abcdef คำจำกัดความนี้สามารถขยายได้มากกว่าสองตัวอักษร หมายเหตุ: คำสั่งเป็นคำจำกัดความ ไม่ใช่แค่การมอบหมาย คำจำกัดความสามารถดำเนินต่อไปยังบรรทัดถัดไปโดยเว้นวรรคแยกบรรทัดดังนี้:
charตัวตน[] = 'เอบีซี' 'def''รับทราบ';
ค่าใช้จ่าย<<ตัวตน<< 'NS';
ผลลัพธ์คือ abcdefghi
หมายเหตุ: ไม่สามารถต่ออักขระในลักษณะนี้ได้ เนื่องจากเครื่องหมายคำพูดเดี่ยวสำหรับอักขระไม่สามารถมีสัญลักษณ์ได้มากกว่าหนึ่งตัว
ตัวดำเนินการความเท่าเทียม
อักขระเดียวกันในกรณีเดียวกันมีค่าเท่ากัน จะไม่เท่ากันหากไม่ใช่กรณีเดียวกัน พิจารณา,
ผลบูล= 'NS' == 'NS';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
== หมายถึงเท่ากับ ในขณะที่ = หมายถึงกำหนดให้และไม่เท่ากับ ผลลัพธ์คือ 1 สำหรับค่าจริง พิจารณา,
ผลบูล= 'NS' == 'NS';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
เอาต์พุตเป็น 0 สำหรับเท็จ พิจารณา,
ผลบูล= 'NS' == 'ค';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
เอาต์พุตเป็น 0 สำหรับเท็จ พิจารณา,
ผลบูล= 'NS' ! = 'NS';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
!= หมายถึงไม่เท่ากัน ในขณะที่ = หมายถึงมอบหมายให้และไม่เท่ากัน เอาต์พุตเป็น 0 สำหรับเท็จ พิจารณา,
ผลบูล= 'NS' ! = 'NS';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
ผลลัพธ์คือ 1 สำหรับค่าจริง พิจารณา,
ผลบูล= 'NS' ! = 'ค';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
ผลลัพธ์คือ 1 สำหรับค่าจริง
ดังนั้น == และ != เป็นตัวดำเนินการความเท่าเทียมกัน
ผู้ประกอบการสัมพันธ์
สำหรับอักขระธรรมดาในภาษา C++ เรียงลำดับจากน้อยไปมาก ตัวเลขจะมาก่อนอักษรตัวพิมพ์ใหญ่ ซึ่งมาก่อนอักษรตัวพิมพ์เล็ก
ดังนั้น
อักษรสตริงเป็นวัตถุ
อาร์เรย์เป็นตัวชี้คงที่ที่จุดเริ่มต้นของลำดับประเภทข้อมูลเฉพาะ ในทำนองเดียวกัน สตริงคือตัวชี้คงที่ที่จุดเริ่มต้นของลำดับอักขระ เปรียบเทียบคำจำกัดความต่อไปนี้:
intarr[] = {3, 4, 5, 6, 7};charNS[] = {'ใน', 'หรือ', 'NS', 'ถึง', 'NS'};
charสตริ[] = 'ผู้หญิง';
อาร์เรย์แรกเป็นอาร์เรย์ของ int และมีห้าองค์ประกอบ อาร์เรย์ที่สองและสามเป็นอาร์เรย์ของอักขระที่มีชื่อต่างกัน แต่มีองค์ประกอบจำนวนเท่ากัน อาร์เรย์ที่สองและสามเหมือนกัน แต่สำหรับชื่อ เนื้อหาข้อความของอาร์เรย์ที่สองคั่นด้วยเครื่องหมายปีกกา อักขระคั่นด้วยเครื่องหมายจุลภาค และอักขระแต่ละตัวอยู่ในเครื่องหมายคำพูดเดี่ยว เนื้อหาข้อความของอาร์เรย์ที่สามคั่นด้วยเครื่องหมายคำพูดคู่ อักขระไม่ได้คั่นด้วยเครื่องหมายจุลภาค และอักขระแต่ละตัวไม่อยู่ในเครื่องหมายคำพูดเดี่ยว อาร์เรย์ที่สองและสามเป็นสองวิธีในการสร้างสตริง โดยวิธีที่สามเป็นวิธีที่ดีกว่า
arr เป็นตัวชี้คงที่ไปยังองค์ประกอบแรกของอาร์เรย์ หมายความว่า arr จะชี้ไปที่ตำแหน่งที่มีจำนวนเต็มเสมอ 3 แม้ว่าค่าของ 3 จะเปลี่ยนไปก็ตาม ขนาดของอาร์เรย์ห้าองค์ประกอบไม่คงที่จริงๆ อย่างไรก็ตาม ค่าแต่ละค่าของอาร์เรย์สามารถเปลี่ยนแปลงได้
str เป็นตัวชี้คงที่ไปยังองค์ประกอบแรกของอาร์เรย์ หมายความว่า str จะชี้ไปที่ตำแหน่งที่มีอักขระเสมอ 'w' แม้ว่าค่าของ 'w' จะเปลี่ยนไปก็ตาม ขนาดของอาร์เรย์อักขระห้าองค์ประกอบไม่คงที่จริงๆ อย่างไรก็ตาม ค่าแต่ละค่าของตัวอักษรสามารถเปลี่ยนแปลงได้
stri เป็นตัวชี้คงที่ไปยังองค์ประกอบแรกของตัวอักษร (อาร์เรย์) ซึ่งหมายความว่า stri จะชี้ไปที่ตำแหน่งที่มีอักขระเสมอ w แม้ว่าค่าของ w จะเปลี่ยนไปก็ตาม ขนาดของตัวอักษรสตริง (อาร์เรย์) ห้าองค์ประกอบไม่คงที่จริงๆ อย่างไรก็ตาม แต่ละค่าของตัวอักษรสามารถปรับเปลี่ยนได้
ค่าคงที่ในอาร์เรย์หรือสตริงตามตัวอักษรคืออะไร? ที่อยู่หน่วยความจำขององค์ประกอบแรกของอาร์เรย์หรือตามตัวอักษรยังคงเป็นค่าของชื่อ (ตัวระบุ) ของอาร์เรย์หรือตามตัวอักษร และไม่สามารถเปลี่ยนแปลงได้ ขนาดของอาร์เรย์หรือตัวอักษรไม่คงที่จริงๆ แต่ละค่าในอาร์เรย์หรือตามตัวอักษรสามารถเปลี่ยนแปลงได้ รหัสต่อไปนี้แสดงให้เห็นว่าองค์ประกอบที่สี่ของแต่ละอาร์เรย์มีการเปลี่ยนแปลงอย่างไร:
intarr[] = {3, 4, 5, 6, 7};charNS[] = {'ใน', 'หรือ', 'NS', 'ถึง', 'NS'};
charสตริ[] = 'ผู้หญิง';
arr[3] = 9;
NS[3] = 'และ';
สตริ[3] = 'และ';
ค่าใช้จ่าย<<arr[3] << 'NS';
ค่าใช้จ่าย<<NS<< 'NS';
ค่าใช้จ่าย<<สตริ<< 'NS';
ผลลัพธ์คือ:
9ผู้หญิงผู้หญิง
ผู้หญิง
โปรดทราบว่าองค์ประกอบของสตริงตามตัวอักษรที่กำหนดไว้ เช่นเดียวกับคำจำกัดความที่สามข้างต้น สามารถเข้าถึงได้ด้วยดัชนีอาร์เรย์ (ตัวห้อย) เหตุผลสำหรับบรรทัดที่สองของเอาต์พุตแสดงไว้ด้านล่าง
คำนิยาม ตัวห้อย
โปรดทราบว่าในคำจำกัดความข้างต้น ไม่มีจำนวนเต็มสำหรับตัวห้อย เมื่อโปรแกรมเมอร์ไม่สามารถกำหนดจำนวนองค์ประกอบได้โดยง่าย ควรละจำนวนเต็มสำหรับตัวห้อย ไม่ว่าในกรณีใด จำนวนเต็มไม่ควรน้อยกว่าจำนวนองค์ประกอบในอาร์เรย์
สำหรับสตริงตามตัวอักษร จำนวนเต็มควรมากกว่าจำนวนอักขระในสตริงอย่างน้อย 1 ตัว เนื่องจากคอมไพเลอร์จะเพิ่มอักขระ null ( ) ไว้ที่ส่วนท้ายของอาร์เรย์ที่เป็นสตริงเสมอ โดยคั่นด้วยเครื่องหมายคำพูดคู่ อักขระ null จะไม่ถูกเพิ่มที่ส่วนท้ายของอาร์เรย์ที่สองด้านบน เนื่องจากไม่ใช่สตริงที่เป็นทางการ อาร์เรย์ที่สามเป็นสตริงที่เป็นทางการ รหัสต่อไปนี้แสดงค่าตัวห้อยขั้นต่ำ
intarr[5] = {3, 4, 5, 6, 7};charNS[5] = {'ใน', 'หรือ', 'NS', 'ถึง', 'NS'};
charสตริ[6] = 'ผู้หญิง';
เพื่อให้คำจำกัดความที่สองเป็นสตริงที่เป็นทางการ จะต้องเพิ่มอักขระ null ดังนี้:
intarr[5] = {3, 4, 5, 6, 7};charNS[6] = {'ใน', 'หรือ', 'NS', 'ถึง', 'NS', ' 0'};
charสตริ[6] = 'ผู้หญิง';
ผลลัพธ์ควรเป็น
9ผู้หญิง
ผู้หญิง
โดยไม่มีผู้หญิงคนที่สอง โปรดทราบว่าตัวห้อยที่สอดคล้องกันสำหรับอาร์เรย์ที่สองคือ 6 และไม่ใช่ 5 เหมือนเดิม
ค่าคงที่ตามตัวอักษร
หากต้องการหยุดอักขระใดๆ ในเครื่องหมายคำพูดคู่ที่กำหนดให้กับตัวระบุไม่ให้ถูกแก้ไข ภายหลังในโปรแกรม ให้นำหน้าคำจำกัดความด้วยคำสงวน const ดังนี้:
const charตัวตน[] = 'ผมรักคุณ';การดำเนินการกับตัวอักษรสตริง
การดำเนินงานที่เท่าเทียมกัน
ตัวดำเนินการความเท่าเทียมกันคือ == และ != เมื่อเปรียบเทียบตัวแปร (ตัวระบุ) ของสองสตริง จะเป็นตัวชี้ (ที่อยู่) ของตัวอักษรที่จะถูกเปรียบเทียบ ว่าเป็นสิ่งที่ผิด. ในการเปรียบเทียบสตริง จะต้องเปรียบเทียบตัวอักษร ตามโค้ดต่อไปนี้:
ผลบูล= 'ผู้หญิง' == 'ผู้หญิง';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
ผลลัพธ์คือ 1 สำหรับค่าจริง การเปรียบเทียบทำได้ในรูปแบบพจนานุกรม แต่ด้วยตัวเลขที่มาก่อนในลำดับจากน้อยไปมาก ก่อนอักษรตัวพิมพ์ใหญ่ซึ่งมาก่อนอักษรตัวพิมพ์เล็ก ผลลัพธ์ของรหัสต่อไปนี้คือ 0 สำหรับเท็จ
ผลบูล= 'ผู้หญิง' ! = 'ผู้หญิง';ค่าใช้จ่าย<<ผลลัพธ์<< 'NS';
ตัวดำเนินการเชิงสัมพันธ์พร้อมตัวอักษรสตริง
ตัวดำเนินการเชิงสัมพันธ์ไม่ทำงานกับตัวอักษรสตริง
อักษรสตริงดิบ
ลิเทอรัลสตริงดิบ อนุญาตให้แสดงสตริงเป็นประเภท ละเว้น Escape Sequence และเคารพการขึ้นบรรทัดใหม่ พิจารณารหัสต่อไปนี้:
charNS[] =NS'(abc\d efg เขาklmnNS' 'opq
ก่อน)';
ค่าใช้จ่าย<< str << 'NS';
ผลลัพธ์คือ:
abc\d efg เขาklmn n'' opq
อันดับแรก
ในโค้ด อักษรสตริงแบบ raw ขึ้นต้นด้วย R ตามด้วย และ ( . มันลงท้ายด้วย ) และ .
ประเภทตัวอักษรของสตริงหลัก C++
char
ประเภทอักขระเป็นประเภท C ++ ดั้งเดิมและโดยทั่วไปจะจัดเก็บอักขระใน 8 บิต
char16_t
นี้เก็บอักขระใน 16 บิต
char32_t
สิ่งนี้จะเก็บอักขระใน 32 บิต
wchar_t
char16_t และ char32_t เป็นอักขระแบบกว้าง wchar_t เป็นอักขระแบบกว้างที่เป็นกรรมสิทธิ์และกำหนดการใช้งาน
บทสรุป
อักขระตามตัวอักษรคืออักขระตัวเดียวในเครื่องหมายคำพูดเดี่ยว ลำดับหลีกเป็นอักขระที่สามารถอยู่ในเครื่องหมายคำพูดเดี่ยวได้ สตริงตามตัวอักษรคือลำดับของอักขระในเครื่องหมายคำพูดคู่ ตัวอักษรสตริงคืออาร์เรย์ของอักขระที่ลงท้ายด้วย ตัวดำเนินการความเท่าเทียมและเชิงสัมพันธ์ทำงานกับตัวอักษร ตัวดำเนินการความเท่าเทียมกันทำงานกับตัวอักษรสตริง แต่ตัวดำเนินการเชิงสัมพันธ์ไม่ทำงานกับตัวอักษรสตริง ตัวระบุอักขระสามารถใช้ในการเปรียบเทียบได้ แต่ไม่ควรใช้ตัวระบุสตริงในการเปรียบเทียบ ตัวอักษรสตริงแบบ raw อนุญาตให้แสดงสตริงตามที่พิมพ์ ละเว้นลำดับการยกเว้น และคำนึงถึงการขึ้นบรรทัดใหม่
คริส