سلسلة C ++
يوفر C ++ تمثيل سلسلة من النوعين التاليين:
- سلاسل على الطراز C
- C ++ نوع فئة سلسلة قدم
سلاسل على الطراز C
نشأت سلاسل الطراز C في لغة C و C ++ تواصل لتكون معتمدة. يستخدم سلسلة فعلا حرفخالية مجموعة '\ 0 "ذات بعد واحد من الأحرف إنهاؤها.ولذلك، سلسلة خالية منتهية الذي يحتوي على أحرف من السلسلة.
البيانات التالية إنشاء وتهيئة "مرحبا" السلسلة. منذ نهاية مجموعة لتخزين حرف خالية، وبالتالي فإن حجم مجموعة من الأحرف من كلمة "مرحبا" هي أكثر من عدد من الشخصيات.
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
وبناء قواعد مجموعة التهيئة، يمكنك كتابة العبارة أعلاه البيان التالي:
char greeting[] = "Hello";
وفيما يلي سلسلة من C / C ++، قال المحددة في الذاكرة:
في الواقع، لا تحتاج إلى حرفخاليةفي نهاية ثابت سلسلة. عندما C ++ التهيئة مترجم مجموعة، تلقائيا '\ 0' في نهاية السلسلة. دعونا نحاول سلسلة الانتاج المذكورة أعلاه:
#include <iostream> using namespace std; int main () { char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; cout << "Greeting message: "; cout << greeting << endl; return 0; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
Greeting message: Hello
C ++ لديها الكثير من المهام لمعالجة سلسلة منتهية خالية من: تدعم مجموعة واسعة من الوظائف التي تعالج سلاسل منتهية:
序号 | 函数 & 目的 |
---|---|
1 | strcpy(s1, s2); 复制字符串 s2 到字符串 s1。 |
2 | strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。 |
3 | strlen(s1); 返回字符串 s1 的长度。 |
4 | strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。 |
5 | strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 |
6 | strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 |
يستخدم المثال التالي بعض من المهام المذكورة أعلاه:
#include <iostream> #include <cstring> using namespace std; int main () { char str1[10] = "Hello"; char str2[10] = "World"; char str3[10]; int len ; // 复制 str1 到 str3 strcpy( str3, str1); cout << "strcpy( str3, str1) : " << str3 << endl; // 连接 str1 和 str2 strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; // 连接后,str1 的总长度 len = strlen(str1); cout << "strlen(str1) : " << len << endl; return 0; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10
في فئة سلسلة C ++
توفر المكتبة القياسية C ++ نوع الدرجةسلسلة يدعم جميع العمليات المذكورة أعلاه، ويضيف أيضا العديد من الميزات.سوف نتعلم C ++ الطبقة المكتبة القياسية، الآن دعونا نلقي نظرة على الأمثلة التالية:
الآن قد لا يكون بعد فهم دقيق لهذا المثال، لأنه حتى الآن لدينا الفئات والكائنات لم يناقش. بعد ذلك يمكنك الآن مجرد نظرة الخام لهذا المثال، وفهم ذلك المفاهيم وجوه المنحى تأتي مرة أخرى حول وفهم هذه الحالة.
#include <iostream> #include <string> using namespace std; int main () { string str1 = "Hello"; string str2 = "World"; string str3; int len ; // 复制 str1 到 str3 str3 = str1; cout << "str3 : " << str3 << endl; // 连接 str1 和 str2 str3 = str1 + str2; cout << "str1 + str2 : " << str3 << endl; // 连接后,str3 的总长度 len = str3.size(); cout << "str3.size() : " << len << endl; return 0; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
str3 : Hello str1 + str2 : HelloWorld str3.size() : 10