Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Difference between string and char[] types in C++


ในส่วนนี้ เราจะดูความแตกต่างระหว่าง string และ char[] ใน C++ char[] คือ array ของ characters โดยพื้นฐาน ดังนั้นมีคุณสมบัติของ array บางอย่าง คุณสมบัติเหล่านี้ระบุด้านล่าง

  • ถ้า char[] ถูกจัดสรรในส่วน stack จะใช้พื้นที่ 256 bytes เสมอ ไม่ขึ้นกับขนาดของข้อความ

  • ถ้าเราใช้ malloc() หรือ calloc() เพื่อจัดสรรพื้นที่แบบ dynamic เข้าไปใน heap section เราจะต้องรับผิดชอบในการปล่อยหน่วยความจำหลังใช้งาน และเราจะมี overhead ของการจัดสรร heap เสมอ

  • ถ้าขนาดของ character array ใหญ่กว่า 256 characters โปรแกรมอาจ crash อาจสร้าง assertion message ที่醜陋ในโค้ดของเรา

  • เพื่อหาความยาวของ string เราต้องสแกน character array ทั้งหมดจนกว่าจะถึง character '\0' ทุกครั้ง

สำหรับ C++ มี string ใน standard namespace นี้ string เป็น class และมี character array อยู่ภายใน มันจัดการอัตโนมัติให้ผู้ใช้ ในกรณีส่วนใหญ่ built-in array สำหรับ string คือ 16 characters ดังนั้นสำหรับสตริงสั้นๆ มันไม่ fragment string แต่สำหรับสตริงยาว มันใช้ heap section

C++ string มี built-in '\0' characters มันเก็บความยาวของ string โดยไม่นับ นอกจากนี้สำหรับข้อความสั้น ไม่ใช้ heap จึงป้องกัน buffer overruns และ strings ใช้งานง่ายใน C++