Khi đọc / thử một câu trả lời gần đây , tôi rất ngạc nhiên khi thấy String
lớp Arduino hỗ trợ c_str()
phương thức này, giống như lớp C ++ std::string
. Như mong đợi, nó xuất hiện để lấy một con trỏ tới nội dung của chuỗi dưới dạng một char
mảng kết thúc null (tức là chuỗi kiểu C).
Tuy nhiên, (theo như tôi có thể thấy) phương pháp đó không được đề cập trong tài liệu chính thức của Arduino. Ngoài ra, trong tất cả các mã ví dụ tôi đã thấy bằng cách sử dụng String
, một cách tiếp cận khác dường như được sử dụng. Một char
bộ đệm thứ cấp được thiết lập và sau đó nội dung của chuỗi được sao chép vào nó bằng cách sử dụng String::toCharArray()
. Điều này rõ ràng đòi hỏi gấp đôi bộ nhớ, cộng với thao tác sao chép O (n).
Có vẻ như c_str()
nên là cách tiếp cận ưa thích. Có một số lý do tại sao toCharArray()
được sử dụng phổ biến hơn?