Arduino - Đối tượng chuỗi

Loại chuỗi thứ hai được sử dụng trong lập trình Arduino là Đối tượng chuỗi.

Đối tượng là gì?

Đối tượng là một cấu trúc chứa cả dữ liệu và hàm. Một đối tượng String có thể được tạo giống như một biến và được gán một giá trị hoặc chuỗi. Đối tượng String chứa các hàm (được gọi là "phương thức" trong lập trình hướng đối tượng (OOP)) hoạt động trên dữ liệu chuỗi có trong đối tượng String.

Bản phác thảo và giải thích sau đây sẽ làm rõ đối tượng là gì và đối tượng String được sử dụng như thế nào.

Thí dụ

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() { 

}

Kết quả

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

Một đối tượng chuỗi được tạo và gán một giá trị (hoặc chuỗi) ở trên cùng của bản phác thảo.

String my_str = "This is my string." ;

Điều này tạo ra một đối tượng Chuỗi với tên my_str và cung cấp cho nó một giá trị là "Đây là chuỗi của tôi.".

Điều này có thể được so sánh với việc tạo một biến và gán một giá trị cho nó, chẳng hạn như một số nguyên -

int my_var = 102;

Bản phác thảo hoạt động theo cách sau.

In chuỗi

Chuỗi có thể được in ra cửa sổ Serial Monitor giống như chuỗi mảng ký tự.

Chuyển đổi chuỗi thành chữ hoa

Đối tượng chuỗi my_str đã được tạo, có một số hàm hoặc phương thức có thể hoạt động trên nó. Các phương thức này được gọi bằng cách sử dụng tên đối tượng theo sau là toán tử dấu chấm (.) Và sau đó là tên của hàm sẽ sử dụng.

my_str.toUpperCase();

Các toUpperCase() hàm hoạt động trên chuỗi chứa trong my_strđối tượng có kiểu Chuỗi và chuyển đổi dữ liệu chuỗi (hoặc văn bản) mà đối tượng chứa thành các ký tự viết hoa. Bạn có thể tìm thấy danh sách các hàm mà lớp Chuỗi chứa trong tham chiếu Chuỗi Arduino. Về mặt kỹ thuật, String được gọi là một lớp và được sử dụng để tạo các đối tượng String.

Ghi đè một chuỗi

Toán tử gán được sử dụng để gán một chuỗi mới cho my_str đối tượng thay thế chuỗi cũ

my_str = "My new string." ;

Toán tử gán không thể được sử dụng trên chuỗi mảng ký tự, nhưng chỉ hoạt động trên các đối tượng Chuỗi.

Thay thế một từ trong chuỗi

Hàm Replace () được sử dụng để thay thế chuỗi đầu tiên được chuyển cho nó bằng chuỗi thứ hai được chuyển cho nó. Replace () là một hàm khác được tích hợp trong lớp String và do đó có sẵn để sử dụng trên đối tượng String my_str.

Nhận độ dài của chuỗi

Việc lấy độ dài của chuỗi có thể dễ dàng thực hiện bằng cách sử dụng length (). Trong bản phác thảo ví dụ, kết quả trả về bởi length () được chuyển trực tiếp đến Serial.println () mà không sử dụng một biến trung gian.

Khi nào sử dụng một đối tượng chuỗi

Đối tượng Chuỗi dễ sử dụng hơn nhiều so với một mảng ký tự chuỗi. Đối tượng có các hàm tích hợp có thể thực hiện một số thao tác trên chuỗi.

Nhược điểm chính của việc sử dụng đối tượng String là nó sử dụng nhiều bộ nhớ và có thể nhanh chóng sử dụng hết bộ nhớ RAM của Arduinos, điều này có thể khiến Arduino bị treo, bị treo hoặc hoạt động không mong muốn. Nếu một bản phác thảo trên Arduino nhỏ và hạn chế việc sử dụng các đối tượng thì sẽ không có vấn đề gì.

Chuỗi mảng ký tự khó sử dụng hơn và bạn có thể cần viết các hàm của riêng mình để hoạt động trên các loại chuỗi này. Ưu điểm là bạn có quyền kiểm soát kích thước của các mảng chuỗi mà bạn tạo, vì vậy bạn có thể giữ các mảng nhỏ để tiết kiệm bộ nhớ.

Bạn cần đảm bảo rằng bạn không viết vượt quá giới hạn cuối của mảng với mảng chuỗi. Đối tượng String không gặp vấn đề này và sẽ chăm sóc các giới hạn của chuỗi cho bạn, miễn là có đủ bộ nhớ để nó hoạt động. Đối tượng String có thể cố gắng ghi vào bộ nhớ không tồn tại khi nó hết bộ nhớ, nhưng sẽ không bao giờ ghi vào phần cuối của chuỗi mà nó đang hoạt động.

Nơi các chuỗi được sử dụng

Trong chương này, chúng ta đã nghiên cứu về các chuỗi, cách chúng hoạt động trong bộ nhớ và hoạt động của chúng.

Các ứng dụng thực tế của chuỗi sẽ được đề cập trong phần tiếp theo của khóa học này khi chúng ta nghiên cứu cách lấy thông tin đầu vào của người dùng từ cửa sổ Serial Monitor và lưu dữ liệu đầu vào trong một chuỗi.