Arduino - วัตถุสตริง

สตริงประเภทที่สองที่ใช้ในการเขียนโปรแกรม Arduino คือ String Object

วัตถุคืออะไร?

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

ภาพร่างและคำอธิบายต่อไปนี้จะทำให้ชัดเจนว่าวัตถุคืออะไรและใช้วัตถุ String อย่างไร

ตัวอย่าง

void setup() { 
   String my_str = "This is my string.";
   Serial.begin(9600);

   // (1) print the string
   Serial.println(my_str);

   // (2) change the string to upper-case
   my_str.toUpperCase();
   Serial.println(my_str);

   // (3) overwrite the string
   my_str = "My new string.";
   Serial.println(my_str);

   // (4) replace a word in the string
   my_str.replace("string", "Arduino sketch");
   Serial.println(my_str);

   // (5) get the length of the string
   Serial.print("String length is: ");
   Serial.println(my_str.length());
}

void loop() { 

}

ผลลัพธ์

This is my string.
THIS IS MY STRING.
My new string.
My new Arduino sketch.
String length is: 22

วัตถุสตริงถูกสร้างและกำหนดค่า (หรือสตริง) ที่ด้านบนของร่าง

String my_str = "This is my string." ;

สิ่งนี้สร้างวัตถุ String ที่มีชื่อ my_str และให้ค่าเป็น "นี่คือสตริงของฉัน"

สิ่งนี้สามารถเปรียบเทียบได้กับการสร้างตัวแปรและกำหนดค่าให้กับตัวแปรเช่นจำนวนเต็ม -

int my_var = 102;

ภาพร่างทำงานในลักษณะต่อไปนี้

การพิมพ์สตริง

สามารถพิมพ์สตริงลงในหน้าต่าง Serial Monitor ได้เช่นเดียวกับสตริงอาร์เรย์อักขระ

แปลง String เป็น Upper-case

my_str อ็อบเจ็กต์สตริงที่สร้างขึ้นมีฟังก์ชันหรือวิธีการหลายอย่างที่สามารถดำเนินการได้ วิธีการเหล่านี้เรียกใช้โดยใช้ชื่อวัตถุตามด้วยตัวดำเนินการจุด (.) จากนั้นชื่อของฟังก์ชันที่จะใช้

my_str.toUpperCase();

toUpperCase() ฟังก์ชันทำงานกับสตริงที่มีอยู่ในไฟล์ my_strซึ่งเป็นประเภท String และแปลงข้อมูลสตริง (หรือข้อความ) ที่วัตถุมีเป็นอักขระตัวพิมพ์ใหญ่ รายการฟังก์ชันที่คลาส String มีอยู่ในการอ้างอิง Arduino String ในทางเทคนิค String เรียกว่าคลาสและใช้ในการสร้างวัตถุ String

เขียนทับสตริง

ตัวดำเนินการการกำหนดใช้เพื่อกำหนดสตริงใหม่ให้กับ my_str วัตถุที่แทนที่สตริงเก่า

my_str = "My new string." ;

ไม่สามารถใช้ตัวดำเนินการกำหนดกับสตริงอาร์เรย์อักขระ แต่ใช้ได้กับอ็อบเจ็กต์ String เท่านั้น

การแทนที่ Word ใน String

ฟังก์ชัน replace () ใช้เพื่อแทนที่สตริงแรกที่ส่งผ่านไปโดยสตริงที่สองที่ส่งผ่านไป แทนที่ () เป็นฟังก์ชันอื่นที่สร้างขึ้นในคลาส String ดังนั้นจึงพร้อมใช้งานบนอ็อบเจ็กต์ String my_str

รับความยาวของสตริง

การรับความยาวของสตริงทำได้อย่างง่ายดายโดยใช้ length () ในภาพร่างตัวอย่างผลลัพธ์ที่ส่งคืนโดย length () จะถูกส่งไปยัง Serial.println () โดยตรงโดยไม่ต้องใช้ตัวแปรกลาง

เมื่อใดควรใช้ String Object

อ็อบเจ็กต์ String ใช้งานง่ายกว่าอาร์เรย์อักขระสตริง อ็อบเจ็กต์มีฟังก์ชันในตัวที่สามารถดำเนินการกับสตริงได้หลายอย่าง

ข้อเสียเปรียบหลักของการใช้ String object คือใช้หน่วยความจำจำนวนมากและสามารถใช้หน่วยความจำ Arduinos RAM ได้อย่างรวดเร็วซึ่งอาจทำให้ Arduino ค้างขัดข้องหรือทำงานโดยไม่คาดคิด หากภาพร่างบน Arduino มีขนาดเล็กและ จำกัด การใช้วัตถุก็ไม่น่ามีปัญหา

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

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

สถานที่ใช้สตริง

ในบทนี้เราได้ศึกษาเกี่ยวกับสตริงลักษณะการทำงานในหน่วยความจำและการทำงานของมัน

การใช้สตริงในทางปฏิบัติจะกล่าวถึงในส่วนถัดไปของหลักสูตรนี้เมื่อเราศึกษาวิธีรับอินพุตของผู้ใช้จากหน้าต่าง Serial Monitor และบันทึกอินพุตเป็นสตริง