Latest web development tutorials

سلسلة C ++

يوفر C ++ تمثيل سلسلة من النوعين التاليين:

  • سلاسل على الطراز C
  • C ++ نوع فئة سلسلة قدم

سلاسل على الطراز C

نشأت سلاسل الطراز C في لغة C و C ++ تواصل لتكون معتمدة. يستخدم سلسلة فعلا حرفخالية مجموعة '\ 0 "ذات بعد واحد من الأحرف إنهاؤها.ولذلك، سلسلة خالية منتهية الذي يحتوي على أحرف من السلسلة.

البيانات التالية إنشاء وتهيئة "مرحبا" السلسلة. منذ نهاية مجموعة لتخزين حرف خالية، وبالتالي فإن حجم مجموعة من الأحرف من كلمة "مرحبا" هي أكثر من عدد من الشخصيات.

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

وبناء قواعد مجموعة التهيئة، يمكنك كتابة العبارة أعلاه البيان التالي:

char greeting[] = "Hello";

وفيما يلي سلسلة من C / C ++، قال المحددة في الذاكرة:

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 ++ لديها الكثير من المهام لمعالجة سلسلة منتهية خالية من: تدعم مجموعة واسعة من الوظائف التي تعالج سلاسل منتهية:

序号函数 & 目的
1strcpy(s1, s2);
复制字符串 s2 到字符串 s1。
2strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。
3strlen(s1);
返回字符串 s1 的长度。
4strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
5strchr(s1, ch);
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
6strstr(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