النصوص في C++ يمكن تمثيلها باستخدام نوعين رئيسيين: المصفوفات الحرفية (char arrays) و الكائنات من النوع string التي توفرها مكتبة C++ القياسية.
1. الفرق بين char arrays و string
المصفوفات الحرفية (char arrays):
المصفوفة الحرفية هي عبارة عن مصفوفة من نوع char يتم فيها تخزين سلسلة من الأحرف. تكون كل سلسلة محاطة بعلامات اقتباس مزدوجة وتخزن عادةً في الذاكرة من النوع ASCII أو UTF-8.
- التعريف:
char str[] = "Hello"; - المزايا:
- يمكن استخدامها في الأنظمة التي لا تدعم مكتبة
string. - تتطلب تعاملًا يدويًا مع نهاية السلسلة (null-terminator
\0).
- يمكن استخدامها في الأنظمة التي لا تدعم مكتبة
- العيوب:
- تحتاج إلى معرفة حجم المصفوفة مسبقًا.
- ليست مرنة أو سهلة التعامل معها مقارنة بالكائنات
string.
الكائنات من النوع string:
توفّر C++ مكتبة string نوع بيانات أكثر مرونة وتعاملًا مع النصوص، وتسمح بالعديد من العمليات المدمجة لتسهيل العمل مع النصوص.
- التعريف:
#include <string> std::string str = "Hello"; - المزايا:
- لا تحتاج إلى تحديد حجم السلسلة.
- توفر العديد من الوظائف المدمجة للعمل مع النصوص مثل الإضافة، البحث، القطع، والمقارنة.
- العيوب:
- تتطلب استخدام مكتبة
string.
- تتطلب استخدام مكتبة
2. العمليات على النصوص (append, find, substr)
إضافة النصوص (append)
يمكنك إضافة نصوص (سلاسل نصية) إلى بعضها باستخدام دالة append() أو باستخدام العامل +=.
مثال:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "Hello";
string str2 = " World";
// استخدام append
str1.append(str2);
cout << "النص بعد الإضافة باستخدام append: " << str1 << endl;
// استخدام +=
str1 += "!";
cout << "النص بعد الإضافة باستخدام +=: " << str1 << endl;
return 0;
}
النتيجة:
النص بعد الإضافة باستخدام append: Hello World
النص بعد الإضافة باستخدام +=: Hello World!
البحث في النصوص (find)
دالة find() تُستخدم للبحث عن نص داخل نص آخر، وإذا تم العثور على النص، فإنها تُرجع موقعه في السلسلة النصية، وإذا لم يتم العثور عليها تُرجع القيمة string::npos.
مثال:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Hello World!";
size_t found = str.find("World");
if (found != string::npos) {
cout << "تم العثور على 'World' في الموقع: " << found << endl;
} else {
cout << "لم يتم العثور على 'World'." << endl;
}
return 0;
}
النتيجة:
تم العثور على 'World' في الموقع: 6
- في المثال، البحث عن “World” في النص “Hello World!” سيُرجع موقع البداية للكلمة في السلسلة النصية.
استخراج جزء من النص (substr)
دالة substr() تُستخدم لاستخراج جزء من السلسلة النصية بناءً على الموضع وطول الجزء الذي تريد استخراجه.
مثال:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Hello World!";
// استخراج جزء من النص
string subStr = str.substr(0, 5); // استخراج أول 5 أحرف
cout << "الجزء المستخرج من النص: " << subStr << endl;
return 0;
}
النتيجة:
الجزء المستخرج من النص: Hello
- في المثال، دالة
substr(0, 5)تُرجع أول 5 أحرف من السلسلة النصية “Hello World!”، أي “Hello”.
3. العمليات الأخرى على النصوص في C++
المقارنة بين النصوص (compare)
دالة compare() تستخدم لمقارنة سلسلتين نصيتين. تُرجع قيمة:
- 0 إذا كان النصان متساويين.
- قيمة سالبة إذا كان النص الأول أصغر.
- قيمة موجبة إذا كان النص الأول أكبر.
مثال:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "Hello";
string str2 = "Hello";
string str3 = "World";
if (str1.compare(str2) == 0) {
cout << "str1 و str2 متساويان." << endl;
}
if (str1.compare(str3) < 0) {
cout << "str1 أصغر من str3." << endl;
}
return 0;
}
النتيجة:
str1 و str2 متساويان.
str1 أصغر من str3.
إزالة الأحرف (erase)
دالة erase() تُستخدم لإزالة جزء من النص بناءً على الموضع والطول.
مثال:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Hello World!";
str.erase(5, 6); // إزالة 6 أحرف بدءًا من الموضع 5
cout << "النص بعد الإزالة: " << str << endl;
return 0;
}
النتيجة:
النص بعد الإزالة: Hello
4. الخلاصة
- المصفوفات الحرفية و الكائنات من النوع
stringهما الوسيلتان الرئيسيتان للعمل مع النصوص في C++. - الكائنات من النوع
stringأكثر مرونة وتوفر العديد من الوظائف المدمجة مثل:append(),find(),substr(),compare(), وerase(). - المصفوفات الحرفية يمكن أن تكون مفيدة في بعض الحالات الخاصة ولكنها تتطلب مزيدًا من التعامل اليدوي مع الحجم والنهاية.
العمل مع النصوص في C++ باستخدام string يجعل التعامل مع البيانات النصية أكثر سهولة ومرونة مقارنة باستخدام المصفوفات الحرفية.
اكتشاف المزيد من كود التطور
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.


