عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال
اربط محتوى السلاسل النصية واقطع أجزاء منه وابحث فيه واستبدله باستخدام واجهة API الخاصة بـ std::string
عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
الضم باستخدام +
يدمج المعامل + سلسلتين نصيتين في سلسلة جديدة. ويضيف += النص إلى السلسلة الحالية.
std::string a = "Hello, ";
std::string b = "World";
std::string c = a + b; // "Hello, World"
a += b; // a is now "Hello, World"الإلحاق بكفاءة
يؤدي تكرار استخدام + مع السلاسل النصية الطويلة إلى إنشاء العديد من القيم المؤقتة. استخدم += أو append() في الحلقات الحرجة من ناحية الأداء.
std::string result;
for (auto& word : words) {
result += word;
result += ' ';
}السلسلة الفرعية باستخدام substr
تعيد substr(pos, len) سلسلة جديدة تبدأ من pos. وتكون القيمة الافتراضية لـ len هي بقية السلسلة.
std::string s = "Hello, World";
std::cout << s.substr(0, 5); // "Hello"
std::cout << s.substr(7); // "World"العثور على السلاسل الفرعية: find
تعيد find(needle) فهرس أول تطابق، أو std::string::npos إذا لم يُعثر عليه.
std::string s = "the quick brown fox";
auto pos = s.find("quick");
if (pos != std::string::npos)
std::cout << "Found at " << pos;العثور بدءًا من موضع
مرّر وسيطًا ثانيًا لبدء البحث من فهرس محدد — وهذا مفيد للعثور على جميع التكرارات.
std::string s = "abc abc abc";
size_t pos = 0;
while ((pos = s.find("abc", pos)) != std::string::npos) {
std::cout << pos << ' ';
pos += 3;
}rfind: البحث من النهاية
تعثر rfind على آخر تكرار. وتبحث find_first_of وfind_last_of عن أي محرف من مجموعة محارف.
الاستبدال في مكانه
تستبدل replace(pos, len, str) عدد len من المحارف بدءًا من pos بالقيمة str — ويمكن أن يكون طول السلسلة الجديدة مختلفًا.
std::string s = "Hello, World";
s.replace(7, 5, "C++");
std::cout << s; // "Hello, C++"حذف المحارف
تحذف erase(pos, len) سلسلة فرعية. ويؤدي استدعاء erase() من دون وسائط إلى مسح السلسلة بأكملها.
std::string s = "Hello, World";
s.erase(5, 2); // removes ", "
std::cout << s; // "HelloWorld"إدراج المحارف
تُدرج insert(pos, str) القيمة str عند pos، فتزيح كل ما بعدها إلى اليمين.
std::string s = "HelloWorld";
s.insert(5, ", ");
std::cout << s; // "Hello, World"مقارنة السلاسل
استخدم معاملات المقارنة القياسية أو compare(). وتتم المقارنة بترتيب معجمي.
std::string a = "apple", b = "banana";
if (a < b) std::cout << "apple comes first";استبدال جميع التكرارات
لا توفر المكتبة القياسية استدعاءً واحدًا للاستبدال الشامل. اكتب دالة مساعدة بسيطة أو استخدم std::regex.
void replaceAll(std::string& s, const std::string& from, const std::string& to) {
size_t pos = 0;
while ((pos = s.find(from, pos)) != std::string::npos) {
s.replace(pos, from.size(), to);
pos += to.size();
}
}تحقق سريع
ماذا تعيد "hello".find("xyz") عندما تكون السلسلة الفرعية غير موجودة؟
مراجعة
توفر std::string واجهة برمجية غنية: استخدم + و+= للضم، وsubstr للتقطيع، وfind للبحث، وreplace وerase وinsert للتحرير. قارن النتيجة مع std::string::npos بعد استخدام find.
الأسئلة الشائعة
هل درس «عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال» مجاني؟
نعم — نص درس «عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال»؟
اربط محتوى السلاسل النصية واقطع أجزاء منه وابحث فيه واستبدله باستخدام واجهة API الخاصة بـ std::string تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- std::string مقابل مصفوفات المحارف بأسلوب C
- عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال
- دفق السلاسل stringstream للتحليل
- تحويل السلاسل النصية: to_string وstoi