std::string مقابل مصفوفات المحارف بأسلوب C
قارن بين std::string الحديثة ومصفوفات char القديمة المنتهية بـ null وحدّد متى تستخدم كلًا منهما
std::string مقابل مصفوفات المحارف بأسلوب C درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
طريقتان لتخزين النص
ترث C++ السلاسل النصية بنمط C — وهي مصفوفات char منتهية بصفر — وتضيف std::string من المكتبة القياسية. استخدم std::string في جميع الحالات تقريبًا.
السلاسل النصية بنمط C
السلسلة النصية بنمط C هي تسلسل من char ينتهي ببايت صفري '\0'. وتجتاز دوال مثل strlen المصفوفة حتى تعثر على القيمة الصفرية.
const char* greeting = "Hello";
// Memory: H, e, l, l, o, \0 (6 bytes)
#include <cstring>
std::cout << std::strlen(greeting); // 5std::string
تدير std::string ذاكرتها بنفسها وتنمو حسب الحاجة. أنشئها كما تنشئ أي نوع آخر.
#include <string>
std::string name = "Ada";
name += " Lovelace";
std::cout << name; // Ada Lovelaceالحجم والطول
إن std::string::size() وlength() مترادفان ويعيدان عدد المحارف (من دون احتساب المحرف الصفري).
std::string s = "hello";
std::cout << s.size(); // 5
std::cout << s.length(); // 5الوصول باستخدام الفهرس
اقرأ المحارف أو اكتبها باستخدام [] أو at(). بخلاف []، ترمي at() استثناءً إذا كان الفهرس خارج النطاق.
std::string s = "cat";
char first = s[0]; // 'c'
char last = s.at(2); // 't'
// s.at(10) throws std::out_of_rangeالسلاسل النصية الفارغة
استخدم empty() بدلًا من size() == 0. فهي أوضح وسرعتها مماثلة.
متى تستخدم const char*
استخدم سلسلة نصية بنمط C عندما:
- تتفاعل مع مكتبات C أو واجهات برمجة تطبيقات نظام التشغيل
- تعمل مع حرفيات سلاسل نصية لا تتغير مطلقًا
- تعمل على أنظمة مضمنة لا تتوفر فيها المكتبة القياسية
التحويل بينهما
احصل على سلسلة C من std::string باستخدام .c_str(). وأنشئ std::string مباشرةً من const char*.
std::string s = "Hello";
const char* c = s.c_str();
const char* literal = "world";
std::string s2(literal);حرفيات السلاسل النصية هي const char[]
حرفية سلسلة نصية مثل "hi" نوعها const char[3] (بما في ذلك المحرف الصفري). وتوجد في ذاكرة للقراءة فقط.
حرفيات السلاسل النصية الخام
ضع السابقة R"(...)" لتجاوز معالجة محارف الهروب. وهذا مفيد لأنماط التعبيرات النمطية ومسارات الملفات.
std::string regex = R"(\d+\.\d{2})";
std::string path = R"(C:\Users\Ada)";التكرار على std::string
السلاسل النصية حاويات. كرّر عليها باستخدام حلقة for معتمدة على النطاق أو الفهارس أو المكررات.
std::string s = "abc";
for (char c : s) std::cout << c << " "; // a b cتحقق سريع
أي دالة من std::string ترمي استثناءً عندما يكون الفهرس خارج النطاق؟
خلاصة
فضّل std::string للنصوص التي تدير ذاكرتها بنفسها. استخدم const char* للحرفيات وللتفاعل مع واجهات C البرمجية. حوّل بينهما باستخدام .c_str() والإنشاء المباشر.
الأسئلة الشائعة
هل درس «std::string مقابل مصفوفات المحارف بأسلوب C» مجاني؟
نعم — نص درس «std::string مقابل مصفوفات المحارف بأسلوب C» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «std::string مقابل مصفوفات المحارف بأسلوب C»؟
قارن بين std::string الحديثة ومصفوفات char القديمة المنتهية بـ null وحدّد متى تستخدم كلًا منهما تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «std::string مقابل مصفوفات المحارف بأسلوب C»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- std::string مقابل مصفوفات المحارف بأسلوب C
- عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال
- دفق السلاسل stringstream للتحليل
- تحويل السلاسل النصية: to_string وstoi