السلام عليكم
اليوم راح اتكلم عن فرق بين
character and string
كلهم يؤدي الى نفس الغرض الى هو يقبل الحروف فقط مثل ABCD ولكن يختلف بالطريقة الاستخدام نوع المتغير تمام.
String
String: ياخذ مجموعه من الأحرف من غير مسافه.
مثال:
A Z I Z
كذا بيكون عندنا 4 أحرف و المخرج راح يكون AZIZ
هنا مثال أوضح:
أول ملاحظ: نحتاج نضع مكتبة:
Include<string>
نحتاج هذي مكتبة عشان نقدر نستخدم string
والكود الثاني عن عدد الاحرف
length()
طبعآ هذي دالة جاهزه و تستخدمه اذا جيت تحسب كم عدد الاحرف
نرجع درسنا:
مثل ماهو موضح بالصوره اني كتبت فقط كلمة وحده وطبعتها تطلع لي عدد الاحرف مع الكلمة تمام
ولكن اذا جيت اكتب كلمتين و معاها مسافة مثل كذا:
My Hero
ونشوف بالمثال راح يطبعها كلها ولالا!!
مثل ماتلاحظون طبع لي فقط اول حرفين و لكن اي شي بعد المسافه راح يلغي.
ولكن نقدر نحل المشكلة هذي بأستخدام الدالة
getline()
هذي الدالة راح تسمح لك او تعطيك مجال حتى بعد المسافه
مثلآ لو بكتب هكذا
I am here
راح يطبع مثل ماهو ولكن راح يحتسب المساحة برضو.
هذا مثال:
مثل ماتلاحظون: اني كتبت كلام ومعاها المسافه ويقبل ولكن مع المسافة
للملاحظة: احنا ماستخدمنا المصفوفات نهائيآ هنا لانه string هو مخزن او مجموعه من characters.
و نقدر نستخدم string في جمع مثلآ
name+ name1
أفرض
name = I am
name1 =Aziz
لما نجمعها يصير كذا
I am Aziz
نشوف مثال من هنا:
مثل ماتلاحظون جمعت كلمتين و استخدمت العلامة + او الزائد.
وبس هنا انتهينا من String
Char
char or character
امره غير عن سترينج ولايحتاج نضع له مكتبة مثل سنترينج
هذا النوع يقبل حرف واحد فقط الا في حال استخدمنا المصفوفات تمام!
مثال:
char ch = 'A'
لو عملنا هكذا راح يقبل بكل سهوله لانه كل متغير واحد راح يقبل حرف واحد فقط.
لو نبغى نزيد حرف زياده مثلآ بدال A نخليه AA ماراح يقبل الا في حال وضعنا []
نشوف ونعمل تجربه:
مثل مالاحظنا لو اضفنا حرفين ماراح يقبل حتى لو علمنا كذا:
char ch = 'A','A';
الحين فهمنا تمام ~
طيب ايش الحل؟
نستخدم مصفوفات من غير الحجم
يعني عشان نستخدم char يصير زي string لازم نستخدم []
بحيث الحجم يزيد مع زياده الاحرف تمام.
هنا تجربه من الصوره:
مثل مالاحظنا لما حطينا المصفوفات صار يقبل اي احرف زياده بسبب زياده الحجم
مثل ماتلاحظون بالاخير صارت 5 واذا زودنا بيصير 6 وهكذا.
و نقدر نحدد له حجم في حال الضروره.
طيب هل نقدر نستخدمها نخلي المستخدم يدخل مثلآ اسم؟
نقدر بطريقتين ياتسوي لوب او نستخدم الدالة cin.getline
خلينا نجرب ونشوف:
هنا عملت لووب عشان نقدر نستخدم char لما المستخدم يدخل اي اسم
وايضآ نحتاج نحدد الحجم Size ولكن مشكلته لما نحدد حجم لازم نتأكد الحجم يساوي الكلمة الى بنكتبها مثلآ
زي ماكتبت Aziz و الحجم يكون 4 فقط
وثاني تجربه كتبت Alooh و كتبها كلها الا الاخيره بسبب حجم المصفوفه
ولكن لو كتبنا Iam يبقى حرف واحد ويعتبر مساحه ضائعه.
أو
نستخدم الداله مثل ماعملنا في string و بدون لووب نهائي وأسهل بحيث نوفر المساحات الزايده
cin.getline(ch,80);
طبعآ نستخدم هذا بحيث نقدر ندخل احرف او اسماء مثلآ
Aziz
راح نستخدم 4 مساحات و الباقي يتكنسل عشان نقدر نوفر مساحة ومانضيعها على فاضي.
هذا مثال بالصوره:
مثل مانلاحظ نحتاج نستخدم الحجم عشان نقدر نكتب اكثر من حرف
واستخدمنا الدالة cin.getline بحيث نقدر نكتب ومع المسافه ولما نضغط انتر خلاص يوقف و لايوجد مساحة زائدة.
واتمنى عجبكم الدرس وصلتكم المعلومة ايش الفرق بين character and string
اشوفكم على خير
فمان الله.