🔥 أحدث الأخبار

موقع يهتم بكل ماهو جديد في عالم التكنولوجيا والرياضة

الحلقة السادسة في تعلم C++: السلاسل النصية (Strings) بشكل احترافي

 


الحلقة السادسة في تعلم 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 عند البحث


تمارين

  1. برنامج يطلب اسم المستخدم ويطبع عدد أحرفه
  2. برنامج يتحقق إذا كانت الكلمة "admin"
  3. برنامج يعكس كلمة يدخلها المستخدم
  4. برنامج يحسب عدد حرف معين داخل نص

ملخص الحلقة السادسة

في هذه الحلقة تعلمنا:

  • ما هي Strings
  • cin و getline
  • دمج النصوص
  • length
  • البحث داخل النص
  • تعديل النصوص
  • تطبيقات عملية قوية

في الحلقة السابعة سنتعلم:

🔥 المؤشرات (Pointers) في C++
وهي من أقوى وأهم مفاهيم البرمجة المتقدمة والتي تستخدم في بناء الأنظمة والألعاب والذاكرة ان شاءالله 




تعليقات

💬 🙋🏻‍♂️