الحلقة السادسة في تعلم C++: السلاسل النصية (Strings) بشكل احترافي
#برمجة
مقدمة
مرحباً بك في الحلقة السادسة من سلسلة تعلم C++ للمبتدئين.
في الحلقات السابقة تعلمنا:
- المتغيرات وأنواع البيانات
- الشروط (if / else)
- الحلقات التكرارية (loops)
- الدوال (functions)
- المصفوفات (arrays)
واليوم سندخل إلى موضوع مهم جداً لا يمكن لأي برنامج الاستغناء عنه:
السلاسل النصية (Strings)
ما هي الـ String؟
الـ String هي نوع بيانات يستخدم لتخزين النصوص مثل:
- الاسم
- كلمة المرور
- البريد الإلكتروني
- الرسائل
- الجمل الطويلة
مثال:
string name = "Ahmed";
لماذا الـ String مهمة؟
لأن أغلب البرامج تعتمد على النصوص مثل:
- تسجيل الدخول
- مواقع التواصل
- الألعاب
- الدردشة
- التطبيقات
بدون Strings لن تستطيع التعامل مع المستخدم بشكل طبيعي.
استخدام String في C++
قبل استخدام string يجب إضافة المكتبة:
#include <string>
مثال بسيط
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name = "Ali";
cout << name;
return 0;
}
إدخال String من المستخدم
#include <iostream>
using namespace std;
int main()
{
string name;
cin >> name;
cout << "Hello " << name;
return 0;
}
مشكلة cin مع النصوص الطويلة
إذا كتب المستخدم:
Ahmed Ali
فـ cin سيأخذ فقط:
Ahmed
الحل: getline
#include <iostream>
using namespace std;
int main()
{
string name;
getline(cin, name);
cout << name;
return 0;
}
الفرق بين cin و getline
| cin | getline |
|---|---|
| كلمة واحدة فقط | جملة كاملة |
| يتوقف عند المسافة | يأخذ النص كامل |
دمج النصوص (Concatenation)
#include <iostream>
using namespace std;
int main()
{
string first = "Ahmed";
string last = "Ali";
cout << first + " " + last;
return 0;
}
النتيجة:
Ahmed Ali
طول النص (length)
#include <iostream>
using namespace std;
int main()
{
string name = "Mohammed";
cout << name.length();
return 0;
}
الوصول إلى حرف داخل النص
#include <iostream>
using namespace std;
int main()
{
string name = "Ahmed";
cout << name[0];
return 0;
}
النتيجة:
A
تغيير حرف داخل النص
#include <iostream>
using namespace std;
int main()
{
string name = "Ahmed";
name[0] = 'M';
cout << name;
return 0;
}
النتيجة:
Mhmad
مقارنة النصوص
#include <iostream>
using namespace std;
int main()
{
string a = "abc";
string b = "abc";
if(a == b)
{
cout << "Equal";
}
return 0;
}
مثال تسجيل دخول
#include <iostream>
using namespace std;
int main()
{
string username;
string password;
cout << "Enter username: ";
cin >> username;
cout << "Enter password: ";
cin >> password;
if(username == "admin" && password == "1234")
{
cout << "Login Success";
}
else
{
cout << "Login Failed";
}
return 0;
}
التحقق من طول كلمة المرور
#include <iostream>
using namespace std;
int main()
{
string password;
cin >> password;
if(password.length() < 6)
{
cout << "Weak Password";
}
else
{
cout << "Strong Password";
}
return 0;
}
البحث داخل النص
#include <iostream>
using namespace std;
int main()
{
string text = "Hello World";
if(text.find("World") != string::npos)
{
cout << "Found";
}
return 0;
}
حذف جزء من النص
#include <iostream>
using namespace std;
int main()
{
string text = "Hello World";
text.erase(0, 6);
cout << text;
return 0;
}
النتيجة:
World
استبدال نص داخل String
#include <iostream>
using namespace std;
int main()
{
string text = "I love C++";
text.replace(7, 3, "Python");
cout << text;
return 0;
}
تحويل الحروف الكبيرة والصغيرة (فكرة عامة)
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
char c = 'a';
cout << char(toupper(c));
return 0;
}
مثال: عد الأحرف داخل النص
#include <iostream>
using namespace std;
int main()
{
string text = "hello";
int count = 0;
for(int i = 0; i < text.length(); i++)
{
count++;
}
cout << count;
return 0;
}
مثال عملي مهم: عكس النص
#include <iostream>
using namespace std;
int main()
{
string text = "Ahmed";
for(int i = text.length() - 1; i >= 0; i--)
{
cout << text[i];
}
return 0;
}
النتيجة:
demhA
مثال قوي: عد الأحرف المتكررة
#include <iostream>
using namespace std;
int main()
{
string text = "banana";
char target = 'a';
int count = 0;
for(int i = 0; i < text.length(); i++)
{
if(text[i] == target)
{
count++;
}
}
cout << count;
return 0;
}
أخطاء شائعة
❌ استخدام cin مع نص يحتوي مسافات
❌ نسيان length() عند استخدام loops
❌ مقارنة نصوص باستخدام == (صحيح في C++) لكن خطأ في بعض اللغات الأخرى
❌ تجاهل string::npos عند البحث
تمارين
- برنامج يطلب اسم المستخدم ويطبع عدد أحرفه
- برنامج يتحقق إذا كانت الكلمة "admin"
- برنامج يعكس كلمة يدخلها المستخدم
- برنامج يحسب عدد حرف معين داخل نص
ملخص الحلقة السادسة
في هذه الحلقة تعلمنا:
- ما هي Strings
- cin و getline
- دمج النصوص
- length
- البحث داخل النص
- تعديل النصوص
- تطبيقات عملية قوية
في الحلقة السابعة سنتعلم:
🔥 المؤشرات (Pointers) في C++
وهي من أقوى وأهم مفاهيم البرمجة المتقدمة والتي تستخدم في بناء الأنظمة والألعاب والذاكرة ان شاءالله

تعليقات
إرسال تعليق