การแทรกค่าลงในสตริง

Arduino:
การแทรกค่าลงในสตริง

วิธีการ:

Arduino ไม่มีฟีเจอร์การใส่ค่าตัวแปรลงในสตริงเป็นค่าปริยาย แต่คุณสามารถได้ผลลัพธ์ที่คล้ายคลึงกันโดยใช้ sprintf() หรือโดยการผูกสตริงและตัวแปรเข้าด้วยกัน

char buffer[50]; // ตรวจสอบให้แน่ใจว่าขนาดนี้เพียงพอที่จะจุสตริงสุดท้าย
int sensorValue = analogRead(A0);
sprintf(buffer, "Sensor reading: %d", sensorValue);
Serial.println(buffer);

ผลลัพธ์:

Sensor reading: 402

หรือโดยใช้การผูกสตริง:

String message = "Sensor reading: " + String(sensorValue);
Serial.println(message);

ลงลึก:

ภาษา C และ C++ (ภาษาหลักของสคริปต์ Arduino) โดยปกติไม่มีการใส่ค่าตัวแปรลงในสตริงเหมือนภาษาใหม่ๆ เช่น Python หรือ JavaScript แทนที่จะใช้ sprintf(), ซึ่งเป็นวิธีที่พบบ่อยในการจัดรูปแบบสตริงด้วยตัวแปร มันทำงานได้ แต่อาจดูเกะกะและมีความเสี่ยงต่อการล้นของบัฟเฟอร์หากไม่จัดการอย่างระมัดระวัง

การผสานด้วยคลาส String นั้นเข้าใจง่ายกว่าและปลอดภัยกว่าจากข้อผิดพลาดด้านหน่วยความจำ ข้อเสีย? มันอาจนำไปสู่การแตกตัวของหน่วยความจำ, เฉพาะอย่างยิ่งในโปรแกรมที่ทำงานยาวนานบนอุปกรณ์ที่มีหน่วยความจำจำกัดเช่น Arduinos

ตัวเลือกหนึ่งในบางไลบรารี C++ ใหม่หรือเฉพาะทาง(ไม่เป็นมาตรฐานใน Arduino)คือการใช้ไลบรารีจัดรูปแบบสตริงที่ให้ไวยากรณ์ที่ใกล้เคียงกับการใส่ค่าตัวแปร, เช่น fmtlib

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

ดูเพิ่มเติม