
در آردوینو، String() یک تابع سازنده (constructor) است که انواع دادههای مختلف — از جمله اعداد صحیح، اعشاری، کاراکترها و آرایههای بایتی — را به یک شیء از نوع String تبدیل میکند.
این تابع به شما امکان میدهد به راحتی دادههای غیرمتنی را به متن تبدیل کرده و با آنها کار کنید — مثلاً برای نمایش روی سریال مانیتور یا نمایشگر.
آردوینو نمیتواند مستقیماً یک عدد را به یک رشته متصل کند. بدون تبدیل، کد زیر ممکن است خطا بدهد یا رفتار غیرمنتظرهای داشته باشد:
int value = 42;
String msg = "عدد: " + value; // ❌ خطرناک!
راه درست:
String msg = "عدد: " + String(value); // ✅ ایمن
int n = 255;
String s1 = String(n); // "255" (مبنای 10)
String s2 = String(n, HEX); // "ff"
String s3 = String(n, BIN); // "11111111"
String s4 = String(n, OCT); // "377"
float t = 23.456;
String s = String(t, 2); // "23.46" — فقط 2 رقم اعشار
int code = 72;
String s = String(code, BYTE); // "H"
char text[] = "آردوینو";
String s = String(text); // "آردوینو"
float temp = 23.456;
int humidity = 60;
String log = "دمای هوا: ";
log += String(temp, 1); // "23.5"
log += "°C | رطوبت: ";
log += String(humidity); // "60"
log += "%";
Serial.println(log);
// خروجی: دمای هوا: 23.5°C | رطوبت: 60%
پس از ساخت یک شیء String، میتوانید از توابع زیر استفاده کنید. هر کدام با مثال و خروجی واقعی آورده شده است:
کاراکتر در موقعیت n را برمیگرداند (از ۰ شروع میشود).
String s = "سلام";
char c = s.charAt(1); // c = ل
رشته را با رشتهٔ دیگر مقایسه میکند. اگر برابر باشد → ۰، اگر کوچکتر باشد → عدد منفی، اگر بزرگتر باشد → عدد مثبت.
String a = "آب";
int r = a.compareTo("آب"); // r = 0
مقدار دادهشده را به انتهای رشته اضافه میکند.
String s = "Hello";
s.concat(" World"); // s = "Hello World"
اشارهگر به رشتهٔ سنتی C (const char*) برمیگرداند.
String s = "test";
const char* p = s.c_str(); // p اشاره به "test" دارد
بررسی میکند آیا رشته با زیررشته پایان مییابد.
String s = "data.txt";
bool b = s.endsWith(".txt"); // b = true
بررسی میکند آیا دو رشته کاملاً برابرند (حساس به بزرگ/کوچکی).
String a = "Arduino";
bool b = a.equals("arduino"); // b = false
برابری را بدون در نظر گرفتن حروف بزرگ/کوچک بررسی میکند.
String a = "Arduino";
bool b = a.equalsIgnoreCase("ARDUINO"); // b = true
رشته را به آرایهای از بایتها کپی میکند.
String s = "AB";
byte buf[3];
s.getBytes(buf, 3); // buf = {65, 66, 0}
موقعیت اولین occurrence زیررشته را برمیگرداند.
String s = "hello";
int i = s.indexOf("l"); // i = 2
جستجو از موقعیت from شروع میشود.
String s = "hello";
int i = s.indexOf("l", 3); // i = 3
موقعیت آخرین occurrence زیررشته را برمیگرداند.
String s = "hello";
int i = s.lastIndexOf("l"); // i = 3
تعداد کاراکترهای رشته را برمیگرداند.
String s = "سلام";
int n = s.length(); // n = 4
تمام کاراکترها از موقعیت index به بعد را حذف میکند.
String s = "Arduino";
s.remove(4); // s = "Ardu"
count کاراکتر از موقعیت index حذف میشوند.
String s = "Arduino";
s.remove(2, 3); // s = "Ario"
تمام occurrenceهای old را با new جایگزین میکند.
String s = "I like cats";
s.replace("cats", "dogs"); // s = "I like dogs"
فضای حافظهٔ اولیه برای رشته رزرو میکند (بهینهسازی).
String s;
s.reserve(50); // فضای 50 بایتی رزرو شد
کاراکتر در موقعیت index را تغییر میدهد.
String s = "Hello";
s.setCharAt(0, J); // s = "Jello"
بررسی میکند آیا رشته با زیررشته شروع میشود.
String s = "HTTP/1.1";
bool b = s.startsWith("HTTP"); // b = true
زیررشته از موقعیت from تا انتها.
String s = "Arduino";
String r = s.substring(3); // r = "uino"
زیررشته از from تا قبل از to.
String s = "Arduino";
String r = s.substring(2, 5); // r = "dui"
رشته را در آرایهای از char کپی میکند.
String s = "Hi";
char buf[3];
s.toCharArray(buf, 3); // buf = {H,i,�}
رشته را به عدد اعشاری تبدیل میکند.
String s = "3.14";
double d = s.toDouble(); // d = 3.14
رشته را به عدد صحیح تبدیل میکند.
String s = "123";
int n = s.toInt(); // n = 123
تمام حروف را به کوچک تبدیل میکند.
String s = "Hello";
s.toLowerCase(); // s = "hello"
تمام حروف را به بزرگ تبدیل میکند.
String s = "Hello";
s.toUpperCase(); // s = "HELLO"
فاصلههای ابتدایی و انتهایی را حذف میکند.
String s = " Hello ";
s.trim(); // s = "Hello"
String a = "Hi"; // a = "Hi"
String a = "Hello" + " World"; // a = "Hello World"
String a = "Hi";
a += " there"; // a = "Hi there"
String a = "A";
bool b = (a == "A"); // b = true
String a = "A";
bool b = (a != "B"); // b = true
بر اساس کدهای ASCII کار میکنند. برای فارسی ممکن است رفتار غیرمنتظره داشته باشند.
String a = "Apple";
bool b = (a < "Banana"); // b = true
String s = "ABC";
char c = s[1]; // c = B
هر بار که یک String ایجاد یا تغییر میکند، حافظهٔ جدیدی در RAM اختصاص داده میشود. در آردوینو Uno (فقط ۲ کیلوبایت RAM)، این کار در loop() میتواند پس از چند دقیقه باعث ریست شدن برد شود.
راهکار: در پروژههای بلادرنگ، از char و sprintf() استفاده کنید.
اگر یک عدد بین ۰–۲۵۵ دارید که نمایندهٔ یک کاراکتر است (مثلاً از سنسور سریال)، با String(code, BYTE) مستقیماً آن را به کاراکتر تبدیل کنید — بدون نیاز به آرایههای پیچیده.
تابع String() و کلاس String ابزارهایی قدرتمند برای کار با متن در آردوینو هستند، اما: — در پروژههای آموزشی و کوتاه عالی عمل میکنند.
— در سیستمهای بلادرنگ یا صنعتی، با احتیاط استفاده شوند.
— همیشه از توابعی مثل trim()، toInt() و substring() برای پردازش ورودی استفاده کنید.
این مطلب بر اساس مستندات رسمی Arduino از بخش String() – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم