แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่าง Array Character กับ String

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

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบArray ตัวละครเชือก
ขั้นพื้นฐานอาร์เรย์อักขระคือชุดของตัวแปรของชนิดข้อมูลอักขระสตริงเป็นคลาสและตัวแปรของสตริงเป็นวัตถุของคลาส "สตริง"
วากยสัมพันธ์ถ่าน array_name [ขนาด];สตริง string_name;
การจัดทำดัชนีอักขระแต่ละตัวในอาร์เรย์อักขระสามารถเข้าถึงได้โดยดัชนีในอาร์เรย์ในสตริงอักขระเฉพาะสามารถเข้าถึงได้โดยฟังก์ชัน "string_name.charAt (index)"
ประเภทข้อมูลอาร์เรย์อักขระไม่ได้กำหนดประเภทข้อมูลสตริงกำหนดประเภทข้อมูลใน C ++
ผู้ประกอบการผู้ประกอบการใน C ++ ไม่สามารถใช้กับอาเรย์อักขระได้คุณสามารถใช้ตัวดำเนินการ C ++ มาตรฐานกับสตริง
เขตแดนขอบเขตของอาเรย์นั้นเกินขอบเขตอย่างง่ายดายเขตแดนจะไม่ย่ำยี
ทางเข้าเข้าถึงได้อย่างรวดเร็วเข้าถึงช้า


นิยามของ Character Array

อาร์เรย์อักขระคือชุดของตัวแปรของ "char" ประเภทข้อมูล; มันอาจเป็นอาร์เรย์หนึ่งมิติหรืออาร์เรย์สองมิติ มันจะเรียกว่า "สตริงสิ้นสุดด้วย null" อาร์เรย์อักขระคือลำดับของอักขระที่เก็บไว้ในที่อยู่หน่วยความจำติดต่อกัน ในอาร์เรย์อักขระอักขระเฉพาะสามารถเข้าถึงได้โดยดัชนี “ ตัวอักษร Null” ยุติอาร์เรย์อักขระ”

ลองมาดูตัวอย่างชุดตัวอักษร: -

 char name [] = {'A', 'j', 'a', 'y', '\ 0'}; หรือชื่อ char [] = "Ajay"; 

ที่นี่ "ถ่าน" เป็นชนิดข้อมูลตัวอักษร "ชื่อ" เป็นชื่อตัวแปรของอาร์เรย์อักขระ ฉันได้แสดงสองวิธีในการเริ่มต้นอาร์เรย์อักขระ ในวิธีแรกนั้น null จะถูกกล่าวถึงอย่างชัดเจนและในวิธีที่สองคอมไพเลอร์จะแทรก null โดยอัตโนมัติ

จุดสิ้นสุดของสตริงมักจะเป็นอักขระที่ไม่มีค่าเสมอ มันเป็นตัวละครที่สิ้นสุดของอาร์เรย์ตัวละคร อาร์เรย์อักขระไม่ใช่ชนิดข้อมูลในตัว เราสร้างอาร์เรย์อักขระโดยการประกาศ คุณไม่สามารถใช้โอเปอเรเตอร์มาตรฐานกับอาเรย์อักขระได้ ในการใช้งานอาเรย์อักขระมีฟังก์ชันในตัวเช่น, (strlen (), strlwr (), strupr (), strcat ()) เนื่องจากตัวดำเนินการมาตรฐานไม่สามารถใช้กับอาร์เรย์อักขระได้จึงไม่สามารถมีส่วนร่วมในนิพจน์ใด ๆ ได้

ตัวชี้อักขระไปยังอาร์เรย์อักขระสามารถสร้างได้

ลองมาทำความเข้าใจกับตัวอย่าง

 char s1 [] = "สวัสดี"; ถ่าน s2 [] = "ท่าน"; s1 = s1 + s2; // ผู้ประกอบการผิดพลาดไม่สามารถใช้ s2 = s1; // ข้อผิดพลาดตัวชี้อักขระถ่าน * s = "เช้า"; ถ่าน * p; p = s; // รัน 

ในตัวอย่างข้างต้นเราได้ประกาศอาร์เรย์อักขระสองตัว s1, s2 และตัวชี้อักขระสองตัว s และ p อักขระอาร์เรย์ s1 และ s2 ถูกเตรียมใช้งานเราจะเห็นว่าทั้งตัวดำเนินการเพิ่ม (+) และตัวดำเนินการกำหนดไม่ทำงานในอาร์เรย์อักขระ แต่สามารถกำหนดตัวชี้อักขระให้กับตัวชี้อักขระอื่นได้

โปรดจำไว้ว่าเมื่อเริ่มต้นอาร์เรย์อักขระจะไม่สามารถเริ่มต้นได้อีกครั้งกับชุดอักขระอื่น การเข้าถึงอาร์เรย์อักขระหรือสตริงที่สิ้นสุดด้วยค่า null นั้นรวดเร็วเมื่อเปรียบเทียบกับสตริงใน C ++

คำจำกัดความของ String

สตริงไม่ใช่ชนิดข้อมูลในตัวของ C ++ มันเป็นวัตถุชั้นเรียนประเภท "สตริง" ในการสร้างคลาส C ++ เหมือนกับการสร้าง“ ประเภท” คลาส“ string” เป็นส่วนหนึ่งของไลบรารี C ++ มันถือชุดของตัวละครหรืออาร์เรย์ตัวละครโดยรวม มีเหตุผลสามประการที่อยู่เบื้องหลังการพัฒนาคลาสสตริงมาตรฐาน

  • อันดับแรก คือ "ความสอดคล้อง" อาร์เรย์อักขระไม่ใช่ชนิดข้อมูลในสิทธิ์ของตนเอง
  • ประการที่สอง คือ "ความสะดวกสบาย" คุณไม่สามารถใช้ตัวดำเนินการมาตรฐานกับอาเรย์อักขระได้
  • ข้อที่สาม คือ“ ความปลอดภัย” ขอบเขตของอาเรย์นั้นมีค่ามากกว่า

ให้เราเข้าใจสตริงด้วยตัวอย่าง

 สตริง s1; s1 = "สวัสดี"; สตริง s2 ("อรุณสวัสดิ์"); string s3 = "Hennery"; สตริง s4; 

ในการประกาศข้างต้นตัวแปรสตริงหรือวัตถุสี่รายการ (s1, s2, s3, s4) จะถูกประกาศ ในการประกาศข้างต้นฉันได้แสดงสามวิธีในการเริ่มต้นสตริง สตริง s1 ถูกประกาศจากนั้นเริ่มต้นแยกกัน สตริง s2 ถูกเตรียมใช้งานโดยตัวสร้างของคลาส“ String” สตริง s3 ถูกเตรียมใช้งานในเวลาที่ประกาศเป็นชนิดข้อมูลปกติทำ เราสามารถใช้โอเปอเรเตอร์มาตรฐานกับตัวแปรสตริงได้

 s4 = s1; // การกำหนดสตริงวัตถุหนึ่งให้กับอีก s4 = s1 + s2; // เพิ่มสองสตริงและเก็บผลลัพธ์ในสตริงที่สามถ้า (s3> s2) // เปรียบเทียบสองสตริง s5 (s1); การสร้างวัตถุสตริงใหม่โดยใช้วัตถุสตริงที่มีอยู่ 

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

การเข้าถึงสตริงช้ากว่าเมื่อเปรียบเทียบกับอาร์เรย์อักขระหรือสตริงที่สิ้นสุดด้วยค่า null

ความแตกต่างที่สำคัญระหว่างชุดอักขระและสตริง

  1. อาร์เรย์อักขระคือชุดของตัวแปรที่เป็นประเภทข้อมูลอักขระ String เป็นคลาสที่สร้างอินสแตนซ์เพื่อประกาศสตริง
  2. การใช้ค่าดัชนีคุณสามารถเข้าถึงอักขระจากอาร์เรย์อักขระ ในทางกลับกันถ้าคุณต้องการเข้าถึงอักขระเฉพาะในสตริงคุณสามารถเข้าถึงได้โดยฟังก์ชัน string's_name.charAt (index)
  3. ในฐานะที่เป็นอาร์เรย์ไม่ได้เป็นประเภทข้อมูลในทำนองเดียวกันตัวละครยังไม่ได้เป็นประเภทข้อมูล ในทางกลับกันสตริงเป็นคลาสที่ทำหน้าที่เป็นประเภทอ้างอิงดังนั้นจึงอาจกล่าวได้ว่าสตริงเป็นชนิดข้อมูล
  4. คุณไม่สามารถใช้โอเปอเรเตอร์กับอาเรย์อักขระได้ในขณะที่คุณสามารถใช้โอเปอเรเตอร์กับ String ได้
  5. การเป็นอาร์เรย์อักขระอาเรย์มีความยาวคงที่และขอบเขตของมันสามารถถูกบุกรุกได้ง่าย โดยที่ String ไม่มีขอบเขตใด ๆ
  6. องค์ประกอบของอาร์เรย์จะถูกเก็บไว้ในตำแหน่งหน่วยความจำต่อเนื่องซึ่งสามารถเข้าถึงได้เร็วกว่าตัวแปรสตริง

สรุป:

การไม่สามารถทำงานกับอาเรย์อักขระทำให้เกิดการพัฒนาคลาสสตริงมาตรฐาน

Top