الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

السلاسل string

بدأه yahya91 في 26 يوليو 2010 · 3 رد · 1,001 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ملخص عن السلاسل

مقدمة جيدة في السلاسل

السلاسل بداية : هي سلسلة من المحارف أياً كانت .

تتميز السلاسل عن المصفوفات المحرفية أن المصفوافات المحرفية محدودة الحجم بينما السلاسل string فلا و بالرغم من ذلك فإننا نستطيع أن نتعامل من المتغير string على أنه مصفوفة .

التصريح :

string teststring =”arabteam-2000”;

أو

string teststring ;
teststring =”arabteam-2000”;

الإخراج :

لإخراج هذا المتغير فإنه يكيفي أن نكتب :

cout<<teststring;

الملفات الرئسية المطلوبة:

string , iostream و ذلك طبعاً باستخدام الـstandard namespace .

العمليات البدائية على السلاسل :

-عدد المحارف لسلسلة:

و نقصد بها الفواصل أو الفراغات أو أي حرف .

مثال :

#include<iostream>
#include<string>
using namespace std;
void main()
{
	string teststring="the long of this line of this is=";
int i=teststring.length();
cout<<teststring<<i<<endl;
}

الخرج

the long of this line of this is=33

حيث أن length قام بإعادة عدد المحارف في هذه السلسلة .

إضافة جزء إلى سلسلة :

لنفرض مثلاً أننا خزنا اسم المستخدم في سلسلة و كنيته في سلسلة أخرج و أردى إخراج الاسم و الكنية معاً بإننا يمكن دمجهما معاً في الإخراج أو بوضعهما في سلسلة جديدة و يمكننا أيضاً أن نتيح للمستخدم أن يضيف إلى نهاية السلسلة شيء ما أو أن نضيفه نحن و هذا مثال على ذلك :

#include <string>
#include <iostream>
using namespace std;
void main()
{
string firstname;
string lastname;
string fullname ;
cout<<"firstname:"<<endl;
cin>>firstname;
cout<<"lastname:"<<endl;
cin>>lastname;
fullname = firstname+lastname;
string strend;
cout<<"enter any end"<<endl;
cin>>strend;
fullname+=strend;
fullname+='.'; 
cout<<fullname<<endl;
}

الخرج

firstname:

ahmad

lastname:

mohammad

enter any end

.

ahmadmohammad..

البحث

يمكننا البحث عن أي محرف أو كلمة وردت في سلسلة باستخدام العضو الدالي ()find و الذي يأخذ وسيطين أو وسيط ويعيد رقم المحرف الذي يوجد قبل كلمة البحث :

حالة أخذ الوسيطين :

نمردد لهذا العضو الدالي وسيطين الأول السلسلة أو المحرف المراد البحث عنها و الثاني الموضع الذي سيبدأ من عنده البحث ضمن السلسلة نأخذ المثال التالي :

#include <string>
#include <iostream>
using namespace std;
int main()
{
string str="we all love prophet mohammad yes! we do  ";
int a=str.find("we",0)//strat with the begining of the line
int b=str.find("we",a+1)//strat with the a+1 character and so on>>>>>>>>>
cout<<"first position is :"<<a<<endl;
cout<<"second position is :"<<b<<endl;
int pos;
pos=str.find('m')
if(pos==string::npos)
cout<<"no m hear!"<<endl;
else
cout<<"there is m hear !"<<endl;
}

الخرج

first position is :0

second position is :34

there is m hear !

استخراج سلاسل فرعية

تستخدم العضو الدالي (substr(start, length. الذي له كما ترون وسيطين ، الوسيط الأول هو رقم المحرف الذي يبدأ عنده بأخذ المقطع و length هو عدد المحارف المراد أخذها بعد المحرف الذي بُدئ به .

مثال :

#include<iostream>
#include<string>
using namespace std;
void main()
{
	string str="we all pray for one god .";
	string sub=str.substr(str.length()-5,5);
	cout<<sub<<endl;
}

الخرج

god .

تعديل السلسلة باستخدام الإدخال أو التبديل

و ذلك باستخدام العضوين الداليين

str_name.insert() و str_name.replace()

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str1="arabteam-3000";
	string str2="2000";
	str1.insert(str1.length()-4,str2);
		cout<<str1<<endl;
		str1.replace(0,4,str2);
cout<<str1<<endl;
}

الخرج

arabteam-20003000

2000team-20003000

حيث لـinset وسيطن الأول رقم المحرف الذي سنبدأ بالإدخال عنده و الوسيط الثاني هو السلسلة المراد إدخالها .

و repalce يأخذ ثلاث وسطاء الأول رقم محف البداية و طول الإستبدال و السلسلة التي ستستبدل بها .

و الدرس القادم عن السلاسل ذات الشكل c-string إن أحيانا الله تعالى .

تم تعديل هذه المشاركة بواسطة yahya91 في 26 يوليو 2010 في 19:30

#2

السلام عليكم

فعلا درس جميل و مفيد جدا للمبتدئين أمثالي :)

ما زلنا نننظر منك المزيد :wink:

ننتظر درس السلاسل ذات الشكل c-string على أحر من الجمر :cool:

---------------------

هذه بعض اسئلة المتعلقة بالدرس:

1-مالفرق بين:

str.length()

و

str.size()

2-ما هي طريقة نسخ السلاسل !؟

أريد شرح هذه الطريقة :

string s1(s2);

3-أرجو شرح هذين السطرين:

str.find('m')
if(pos==string::npos)

4-ما هي وظيفة العضو:

Capacity( )

بانتظار توضيحاتك :)

تسلم ع الشرح الوافي :wub:

#3
اقتباس
-ما هي طريقة نسخ السلاسل !؟

هذه الطريقة حسب ما قرأت هي تستخدم عند التمهيد حيث تأخذ السلسلة قيمة موافقة للسلسلة المحددة بين القوسين و هذا مثال على ذلك :

#include<iostream>
#include<string>
using namespace std;
void main()
{
string copy1 ="welcom";
string copy2(copy1);
cout<<copy2<<endl;
}

الخرج:

welcom

Press any key to continue

اقتباس
string::npos

قيمة ما لها علاقة بالتابع find عندما لا يتم العثور على المحرف ( هذا ما أعلمه ).

و على كل الأحوال الكود في الأعلى نسيت فيه أن أسند قيمة للـpos وهي ما سيعيده التابع find

اقتباس
-مالفرق بين:

str.length()

و

str.size()

لا يوجد فرق بينهما حسب ما علمت .

و هذا مثال على ذلك :

#include<iostream>
#include<string>
using namespace std;
void main()
{
string copy1 ="welcom";
string copy2(copy1);
cout<<copy1.size()<<"----"<<copy1.length()<<endl;
}

الخرج:

6----6

Press any key to continue

اقتباس
-ما هي وظيفة العضو:

Capacity( )

لها علاقة بمفهوم الأشعة vectorو التي لم أتعلم عنه أي شيء بعد

اقتباس
للمبتدئين أمثالي

أنا أقل من مبتدئ .أكرمك الله

تم تعديل هذه المشاركة بواسطة yahya91 في 26 يوليو 2010 في 22:32

مواضيع مشابهة