رشته ها برای نگهداری متن استفاده می شوند. از آنها می توان برای نمایش یک متن بر روی LCD یا در سریال مانیتور IDE آردوینو استفاده کرد. string ها برای نگهداری داده های کاربر نیز مفید هستند. برای مثال برای ذخیره کاراکترهایی که کاربر با یک کیبورد متصل به آردوینو تایپ می کند.
دو نوع از string در برنامه نویسی آردوینو وجود دارد:
- آرایه ای از کاراکترها، که دقیقا مشابه رشته ها در زبان برنامه نویسی C است.
- Arduino Strings که امکان نگهداری یک شی از رشته را در برنامه آردوینو فراهم می کند.
در این قسمت از آموزش آردوینو، در خصوص string ها و اشیاء در برنامه های آردوینو صحبت می کنیم.
آرایه های از کاراکترها
اولین نوع رشته ای که بررسی میکنیم نوعی است که در آن مجموعه از کاراکترها در قالب نوع داده char هستند. احتمالا با مفهوم آرایه ها آشنا هستید. در آینده در خصوص آرایه ها توضیحات کاملتری ارایه خواهیم کرد. آرایه ها یک سری پیوسته از یک نوع داده یکسان ذخیره شده در حافظه هستند. یک رشته در واقع آرایه ای از متغیرهای char می باشد.
یک رشته در واقع نوع خاصی از آرایه است که یک عنصر اضافی در انتهای آن دارد و همیشه مقدار آن صفر ست.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void setup() { char my_str[6]; // an array big enough for a 5 character string Serial.begin(9600); my_str[0] = 'H'; // the string consists of 5 characters my_str[1] = 'e'; my_str[2] = 'l'; my_str[3] = 'l'; my_str[4] = 'o'; my_str[5] = 0; // 6th array element is a null terminator Serial.println(my_str); } void loop() { } |
در این مثال با استفاده از Serial.println مقدار متغیر my_str در سریال مانیتور آردوینو چاپ می شود.
در مثال زیر نوع پرکاربرتری از تعریف رشته ها نمایش داده شده است:
1 2 3 4 5 6 7 8 9 | void setup() { char my_str[] = "Hello"; Serial.begin(9600); Serial.println(my_str); } void loop() { } |
در این برنامه، کامپایلر سایز رشته را محاسبه و به صورت خودکار آن را با ۰ تکمیل می کند. خروجی این کد دقیقا مانند کد قبل است.
دستکاری و ویرایش رشته
کد زیر را به عنوان نمونه در نظر بگیرید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | void setup() { char like[] = "I like coffee and cake"; // create a string Serial.begin(9600); // (۱) print the string Serial.println(like); // (۲) delete part of the string like[13] = 0; Serial.println(like); // (۳) substitute a word into the string like[13] = ' '; // replace the null terminator with a space like[18] = 't'; // insert the new word like[19] = 'e'; like[20] = 'a'; like[21] = 0; // terminate the string Serial.println(like); } void loop() { } |
خروجی این برنامه به صورت زیر می باشد :
1 2 3 | I like coffee and cake I like coffee I like coffee and tea |
در مثال بالا یک رشته ایجاد، تغییر و سپس چاپ شد.
مثال دیگر:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | void setup() { char str[] = "This is my string"; // create a string char out_str[40]; // output from string functions placed here int num; // general purpose integer Serial.begin(9600); // (۱) print the string Serial.println(str); // (۲) get the length of the string (excludes null terminator) num = strlen(str); Serial.print("String length is: "); Serial.println(num); // (۳) get the length of the array (includes null terminator) num = sizeof(str); // sizeof() is not a C string function Serial.print("Size of the array: "); Serial.println(num); // (۴) copy a string strcpy(out_str, str); Serial.println(out_str); // (۵) add a string to the end of a string (append) strcat(out_str, " sketch."); Serial.println(out_str); num = strlen(out_str); Serial.print("String length is: "); Serial.println(num); num = sizeof(out_str); Serial.print("Size of the array out_str[]: "); Serial.println(num); } void loop() { } |
خروجی این برنامه آردوینو به صورت زیر است :
1 2 3 4 5 6 7 | This is my string String length is: 17 Size of the array: 18 This is my string This is my string sketch. String length is: 25 Size of the array out_str[]: 40 |