Tư vấn: 0979.466.469 / 0938.128.290

MENU

Chuyển string sang mảng char arduino

Gia cong pcb 600*150px

Về cơ bản biến kiểu string trong arduino là mảng char. Việc chuyển đổi chuỗi thành mảng ký tự có thể được thực hiện bằng cách sử dụng hàm toCharArray() đơn giản. Lấy giá trị string trong mảng char rất hữu ích khi bạn muốn chia một chuỗi thành các phần hoặc lấy một phần của chuỗi.

 

Nói chung, các chuỗi được kết thúc bằng ký tự rỗng (mã ASCII 0). Điều này cho phép các hàm như Serial.print() cho biết vị trí cuối của một chuỗi. Nếu không, chúng sẽ tiếp tục đọc các byte bộ nhớ tiếp theo không thực sự là một phần của chuỗi.

 

Điều này có nghĩa là chuỗi của bạn cần có không gian cho một ký tự nhiều hơn văn bản bạn muốn nó chứa. Đó là lý do tại sao Str2 và Str5 cần có tám ký tự, mặc dù arduino chỉ là bảy, vị trí cuối cùng được tự động điền bằng ký tự rỗng. Str4 sẽ tự động được định cỡ thành tám ký tự, một ký tự cho giá trị rỗng. Trong Str3 đã bao gồm rõ ràng ký tự null (được viết là ‘ 0’).

 

toCharArray(buf, len);

 

Sao chép các ký tự của chuỗi vào bộ đệm được cung cấp.

 

Cú pháp

 

myString.toCharArray(buf, len)

 

Thông số

myString: một biến kiểu chuỗi

buf: bộ đệm để sao chép các ký tự vào (char [])

len: kích thước của bộ đệm (int unsigned)

 

Mã ví dụ để chuyển đổi string thành mảng Char:

 

// Định nghĩa 

String str = "This is my string"; 

 

// Độ dài (có thêm một ký tự cho dấu kết rỗng)

int str_len = str.length() + 1; 

 

// Chuẩn bị mảng ký tự (vùng đệm)

char char_array[str_len];

 

// Sao chép nó qua

str.toCharArray(char_array, str_len);

 

Như đã đề cập ở dòng đầu tiên biến chuỗi Arduino là mảng ký tự. Bạn có thể trực tiếp thao tác trên chuỗi giống như một mảng ký tự.

Module điện tử 932*50

 

Ví dụ:

 

String abc="ABCDEFG";

Serial.print(abc[2]); //Prints 'C'

 

Chuỗi thực sự là mảng kiểu “char” (thông thường). Ví dụ:

 

char myString [10] = "HELLO";

 

Không có trường "độ dài" riêng biệt, vì vậy nhiều hàm C mong đợi chuỗi được "kết thúc bằng null".

 

Kích thước chuỗi tổng thể là 10 byte, tuy nhiên bạn thực sự chỉ có thể lưu trữ 9 byte vì bạn cần cho phép ký tự kết thúc chuỗi (byte 0x00). Độ dài "hoạt động" có thể được thiết lập bằng cách gọi hàm strlen. Ví dụ:

 

Serial.println ( strlen (myString) );   // prints: 5

 

Tổng chiều dài có thể được thiết lập bằng cách sử dụng toán tử sizeof. Ví dụ:

 

Serial.println ( sizeof (myString) );   // prints: 10

 

Bạn có thể nối toàn bộ chuỗi bằng cách sử dụng strcat (chuỗi phân loại). Ví dụ:

 

strcat (myString, "WORLD");

 

Lưu ý rằng trong ví dụ cụ thể này, chuỗi 10 ký tự không thể chứa HELLOWORLD cộng với byte 0x00 ở cuối, do đó sẽ gây ra lỗi chương trình hoặc hành vi không xác định, thuộc một số loại. Vì lý do này, bạn phải theo dõi cẩn thận có bao nhiêu byte trong chuỗi kiểu C, đặc biệt nếu bạn đang thêm vào độ dài của chúng.

 

Lưu ý rằng nếu bạn sử dụng lớp chuỗi STL, bạn có thể sử dụng hàm độ dài để tìm độ dài chuỗi hiện tại và hàm dung lượng để tìm kích thước hiện được cấp phát. Ví dụ:

 

 std::string myString = "HELLO";

  myString.reserve (50);                 // reserve 50 characters

  Serial.println (myString.length ());   // prints: 5

  Serial.println (myString.capacity ()); // prints: 50

 

Sự khác biệt chính giữa mảng char và chuỗi là chúng ta xác định độ dài cho mảng char, chuỗi là động và kết thúc bằng null để xác định phần cuối của nó.

Gia công pcb 932*150
Sản phẩm nổi bật
Sale 0%
40000 /Cái
/ Cái

Code: 7006-031 Còn hàng

Lưu xem sau
Sale 0%
70000 /Cái
/ Cái

Code: M-7006-056 Còn hàng

Lưu xem sau
Sale 0%
50000 /Cái
/ Cái

Code: M-7004-016 Còn hàng

Lưu xem sau
Sale 0%
275000 /Cái
/ Cái

Code: M-7006-015 Còn hàng

Lưu xem sau
Hỗ trợ liên kết
0979466469
0899909838
0938128290
0899909838
Khiếu nại: 0964238397
0979466469
0868565469
0868565469

Hotline: 0979 466 469

Loading
0359 366 469
Bạn cần linh kiện mẫu ? 7-11 ngày