الفرق بين المراجعتين ل"Arduino/string"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 1: سطر 1:
تنشئ الدالة <code>String()‎</code> نسخةً من الصنف <code>String</code>. هنالك طرائق متعدِّدة لإنشاء سلاسل نصية من أنواع مختلفة من البيانات (مثل تنسيق البيانات كسلسلة من المحارف) وهي إمَّا باستعمال علامتي الاقتباس المزدوجة مباشرةً أو استدعاء الدالة <code>String()‎</code> مع:
+
يمكن تمثيل السلاسل النصية بطريقين. فإمَّا أن تستخدم السلاسل النصية كأحد أنواع البيانات في أردوينو والذي أصبح جزءًا من النواة بدءًا من الإصدار 0019، أو يمكن إنشاء سلسلة نصية من مصفوفة من المحارف مع وجود المحرف null في نهايتها. تشرح هذه الصفحة الطريقة الثانية . لمزيد من التفاصيل حول الكائن <code>[[Arduino/stringobject|String]]</code> الذي يوفر الكثير من الوظائف على حساب الذاكرة، اطلع على [[Arduino/stringobject|صفحة]] توثيقه.
* سلسلة نصية ثابتة من المحارف في علامتي اقتباس مزدوجة (أي مصفوفة من المحارف)، أو
 
* محرف ثابت وحيد في علامتي اقتباس مفردة، أو
 
* نسخة أخرى من الكائن <code>String</code>، أو
 
* عدد صحيح ثابت أو عدد طويل ثابت، أو
 
* عدد صحيح ثابت أو عدد طويل ثابت باستعمال أساس محدَّد، أو
 
* عدد صحيح أو عدد طويل متغير، أو
 
* عدد صحيح أو عدد طويل متغير باستعمال أساس محدَّد، أو
 
* عدد عشري أو عدد عشري مضاعف باستعمال منازل عشرية محدَّدة.
 
إنشاء سلسلة نصية من عددٍ يعطي سلسلة نصية تحوي تمثيلًا لأرقام ذلك العدد عبر محارف ASCII. الأساس الافتراضي المستعمل هو 10. سيعطي المثال التالي:<syntaxhighlight lang="arduino">
 
String thisString = String(13);
 
</syntaxhighlight>السلسلة النصية "13". يمكن استعمال أساس مختلف مثل:<syntaxhighlight lang="arduino">
 
String thisString = String(13, HEX);
 
  
</syntaxhighlight>الذي سيعطي السلسلة النصية "D" وهي التمثيل الست عشري للقيمة 13 العشرية. إن كنت تفضل النظام الثنائي، فجرب هذا المثال:<syntaxhighlight lang="arduino">
+
== البنية العامة ==
String thisString = String(13, BIN);
+
جميع الأمثلة التالية هي تصريحات صالحة للسلاسل النصية:<syntaxhighlight lang="arduino">
</syntaxhighlight>الذي سيعطي السلسلة النصية "1101" وهي التمثيل الثنائي للقيمة 13 العشرية.
+
char Str1[15];
 +
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
 +
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
 +
char Str4[ ] = "arduino";
 +
char Str5[8] = "arduino";
 +
char Str6[15] = "arduino";
 +
</syntaxhighlight>يوجد عدَّة احتمالات متاحة للتصريح عن السلاسل النصية هي:
 +
* التصريح عن مصفوفة من المحارف دون تهيئتها كما في المصفوفة Str1.
 +
* التصريح عن مصفوفة من المحارف (مع زيادة محرف إضافي) وسيضيف المصرَّف المحرف null المطلوب مثل المصفوفة Str2.
 +
* هذه الحالة تشبه الحالة السابقة تمامًا باستثناء إضافة المحرف null بشكل صريح إلى المصفوفة مثل المصفوفة Str3.
 +
* تهيئة المصفوفة بسلسلة نصية ثابتة التي تعطى ضمن علامتي اقتباس؛ سيختار المصرِّف عند تصريفه للشيفرة حجمًا ملائمًا للمصفوفة يسع السلسلة النصية الثابتة مع محرف الإنهاء null. انظر إلى المصفوفة Str4 التي تشرح هذه الحالة.
 +
* تهيئة المصفوفة مع تحديد حجمها بصريح العبارة مثل المصفوفة Str5.
 +
* تهيئة المصفوفة مع اختيار حجم زائد لتوفير إمكانية لسلسلة نصية أكبر مستقبلًا. انظر مثلًا إلى المصفوفة Str6 التي تمثِّل هذه الحالة.
  
== البنية العامة ==
+
=== محرف الإنهاء null ===
<syntaxhighlight lang="arduino">
+
عمومًا، تُنهَى السلاسل النصية بالمحرف null (المحرف ASCII 0). هذا يسمح للدوال (مثل الدالة Serial.print()) بأن تعرف نهاية السلسلة النصية في الذاكرة. إن لم يكن محرف الإنهاء موجودًا، فستكمل الدالة قراءة البايتات المتلاحقة الموجودة في الذاكرة التي قد لا تكون جزءًا من السلسلة النصية نفسها.
String(val)
+
 
String(val, base)
+
هذا يعني أنَّ أي سلسلة نصية يجب أن تملك مساحة إضافية لمحرف زائد إضافةً إلى المحتوى الذي تريد تخزينه في السلسلة. هذا هو السبب الذي يفسِّر حاجة المصفوفة Str2 والمصفوفة Str5 إلى الحجم 8 رغم أنَّ حجم العبارة "arduino" هو 7 فقط، إذ سيُضاف في الموضع الأخير المتاح المحرف null تلقائيًّا. بالنسبة للمصفوفة Str4، سيحدَّد حجمها إلى 8 تلقائيًّا مع حساب موضع
String(val, decimalPlaces)
 
</syntaxhighlight>
 
  
 
== المعاملات ==
 
== المعاملات ==

مراجعة 05:29، 25 أكتوبر 2018

يمكن تمثيل السلاسل النصية بطريقين. فإمَّا أن تستخدم السلاسل النصية كأحد أنواع البيانات في أردوينو والذي أصبح جزءًا من النواة بدءًا من الإصدار 0019، أو يمكن إنشاء سلسلة نصية من مصفوفة من المحارف مع وجود المحرف null في نهايتها. تشرح هذه الصفحة الطريقة الثانية . لمزيد من التفاصيل حول الكائن String الذي يوفر الكثير من الوظائف على حساب الذاكرة، اطلع على صفحة توثيقه.

البنية العامة

جميع الأمثلة التالية هي تصريحات صالحة للسلاسل النصية:

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";

يوجد عدَّة احتمالات متاحة للتصريح عن السلاسل النصية هي:

  • التصريح عن مصفوفة من المحارف دون تهيئتها كما في المصفوفة Str1.
  • التصريح عن مصفوفة من المحارف (مع زيادة محرف إضافي) وسيضيف المصرَّف المحرف null المطلوب مثل المصفوفة Str2.
  • هذه الحالة تشبه الحالة السابقة تمامًا باستثناء إضافة المحرف null بشكل صريح إلى المصفوفة مثل المصفوفة Str3.
  • تهيئة المصفوفة بسلسلة نصية ثابتة التي تعطى ضمن علامتي اقتباس؛ سيختار المصرِّف عند تصريفه للشيفرة حجمًا ملائمًا للمصفوفة يسع السلسلة النصية الثابتة مع محرف الإنهاء null. انظر إلى المصفوفة Str4 التي تشرح هذه الحالة.
  • تهيئة المصفوفة مع تحديد حجمها بصريح العبارة مثل المصفوفة Str5.
  • تهيئة المصفوفة مع اختيار حجم زائد لتوفير إمكانية لسلسلة نصية أكبر مستقبلًا. انظر مثلًا إلى المصفوفة Str6 التي تمثِّل هذه الحالة.

محرف الإنهاء null

عمومًا، تُنهَى السلاسل النصية بالمحرف null (المحرف ASCII 0). هذا يسمح للدوال (مثل الدالة Serial.print()) بأن تعرف نهاية السلسلة النصية في الذاكرة. إن لم يكن محرف الإنهاء موجودًا، فستكمل الدالة قراءة البايتات المتلاحقة الموجودة في الذاكرة التي قد لا تكون جزءًا من السلسلة النصية نفسها.

هذا يعني أنَّ أي سلسلة نصية يجب أن تملك مساحة إضافية لمحرف زائد إضافةً إلى المحتوى الذي تريد تخزينه في السلسلة. هذا هو السبب الذي يفسِّر حاجة المصفوفة Str2 والمصفوفة Str5 إلى الحجم 8 رغم أنَّ حجم العبارة "arduino" هو 7 فقط، إذ سيُضاف في الموضع الأخير المتاح المحرف null تلقائيًّا. بالنسبة للمصفوفة Str4، سيحدَّد حجمها إلى 8 تلقائيًّا مع حساب موضع

المعاملات

val

المتغير أو القيمة المراد تنسيقها كسلسلة نصية. نوع البيانات المسموح بها هي: سلسلة نصية، ومحرف، وبايت، وعدد صحيح، وعدد صحيح عديم الإشارة، وعدد طويل عديم الإشارة، وعدد عشري، وعدد عشري مضاعف.

base

معامل اختياري يحدِّد أساس النظام العددي الذي ستُنسَّق فيه القيمة العددية.

decimalPlaces

يقيد عدد المنازل العشرية (الأرقام بعد الفاصلة) للعدد العشري أو العدد العشري المضاعف.

القيم المعادة

تعاد نسخة من الصنف String تحوي القيمة val.

أمثلة

جميع الأمثلة التالية هي أمثلة صحيحة لاستعمال الدالة String()‎:

String stringOne = "Hello String";                        // استعمال سلسلة نصية ثابتة
String stringOne =  String('a');                          // تحويل محرف ثابت إلى سلسلة نصية
String stringTwo =  String("This is a string");           // String تحويل سلسلة نصية ثابتة إلى كائن من النوع
String stringOne =  String(stringTwo + " with more");     // جمع سلسلتين نصيتين مع بعضهما بعضًا
String stringOne =  String(13);                           // استعمال عدد صحيح ثابت
String stringOne =  String(analogRead(0), DEC);           // استعمال عدد صحيح مع تحديد الأساس المستعمل
String stringOne =  String(45, HEX);                      // "استعمال عدد صحيح مع تحديد الأساس  إلى "ست عشري
String stringOne =  String(255, BIN);                     // "استعمال عدد صحيح مع تحديد الأساس إلى "ثنائي
String stringOne =  String(millis(), DEC);                // استعمال عدد طويل مع تحديد الأساس المستعمل
String stringOne =  String(5.698, 3);                     // استعمال عدد عشري مع تحديد عدد المنازل العشرية

الدوال

Arduino/string/charat

Arduino/string/compareto

Arduino/string/concat

Arduino/string/c_str

Arduino/string/endswith

Arduino/string/equals

Arduino/string/equalsignorecase

Arduino/string/getbytes

Arduino/string/indexof

Arduino/string/lastindexof

Arduino/string/length

Arduino/string/remove

Arduino/string/replace

Arduino/string/reserve

Arduino/string/setcharat

Arduino/string/startswith

Arduino/string/substring

Arduino/string/tochararray

Arduino/string/toint

Arduino/string/tofloat

Arduino/string/tolowercase

Arduino/string/touppercase

Arduino/string/trim

المعاملات

Arduino/string/elementaccess

Arduino/string/concatenation

Arduino/string/append

Arduino/string/comparison

Arduino/string/greaterthan

Arduino/string/greaterthanorequalto

Arduino/string/lessthan

Arduino/string/lessthanorequalto

Arduino/string/differentfrom

انظر أيضًا

مصادر