دفق السلاسل stringstream للتحليل
استخدم std::stringstream لتقسيم النص وتحليله إلى قيم ذات أنواع محددة
دفق السلاسل stringstream للتحليل درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
ما هو stringstream؟
يغلّف std::stringstream سلسلةً نصيةً ضمن واجهة iostream. اقرأ منه واكتب إليه باستخدام >> و<< كما لو كان cin أو cout.
#include <sstream>
std::stringstream ss;بناء السلاسل باستخدام stringstream
استخدمه لبناء سلاسل معقدة من أنواع مختلطة. استدعِ .str() للحصول على النتيجة.
std::stringstream out;
out << "User: " << name << ", Age: " << age;
std::string result = out.str();تحليل السلاسل باستخدام stringstream
أنشئه من سلسلة نصية واستخرج القيم باستخدام >>. وهو يقسم النص إلى رموز عند المسافات البيضاء.
std::stringstream in("42 3.14 hello");
int i; double d; std::string s;
in >> i >> d >> s;قراءة سطر إلى رموز
اجمع بين getline وstringstream لتقسيم سطر واحد في كل مرة إلى رموز.
std::string line = "1 2 3 4 5";
std::stringstream ss(line);
int n;
while (ss >> n) {
std::cout << n * n << " ";
}
// 1 4 9 16 25التقسيم عند محدِّد
مرّر محدِّدًا إلى getline مع stringstream للتقسيم عند الفواصل أو الفواصل المنقوطة أو أي محرف آخر.
std::string csv = "apple,banana,cherry";
std::stringstream ss(csv);
std::string fruit;
while (std::getline(ss, fruit, ',')) {
std::cout << fruit << "\n";
}istringstream وostringstream
توجد ثلاثة أنواع:
std::istringstream— للقراءة فقطstd::ostringstream— للكتابة فقطstd::stringstream— للقراءة والكتابة
استخدم النوع الأضيق نطاقًا لجعل الشيفرة أوضح.
التحقق من أخطاء التحليل
إذا فشلت عملية الاستخراج، مثلًا بسبب نوع غير صحيح، يضبط التدفق بتّ الفشل. تحقّق من !ss أو ss.fail() بعد الاستخراج.
std::stringstream ss("not_a_number");
int x;
if (!(ss >> x)) {
std::cout << "Parse failed";
}إعادة ضبط stringstream
لإعادة استخدام stringstream، امسح حالته ومحتواه.
std::stringstream ss;
ss << "first";
ss.str(""); // clear contents
ss.clear(); // clear flags
ss << "second";التحويل من رقم إلى سلسلة
للتحويلات البسيطة، يكون std::to_string أقصر من استخدام stringstream.
std::string s = std::to_string(42); // "42"
std::string p = std::to_string(3.14); // "3.140000"التحويل من سلسلة إلى رقم دون تدفقات
تحلل std::stoi وstd::stod وstd::stoll الأرقام من السلاسل، وتطرح استثناءً عند الإدخال غير الصالح.
int n = std::stoi("42");
double d = std::stod("3.14");
// std::stoi("xyz") throws std::invalid_argumentC++17 std::from_chars
للحصول على أقصى سرعة، يحلل std::from_chars في <charconv> القيم دون استثناءات أو عمليات تخصيص. وهو مثالي للمسارات الساخنة.
تحقق سريع
ما الترويسة التي يجب تضمينها لاستخدام std::stringstream؟
مراجعة
يحوّل std::stringstream السلاسل إلى تدفقات لتسهيل التحليل والتنسيق. ادمجه مع std::getline للتقسيم عند المحددات. وفي الحالات البسيطة، يُفضّل استخدام std::to_string وstd::stoi.
الأسئلة الشائعة
هل درس «دفق السلاسل stringstream للتحليل» مجاني؟
نعم — نص درس «دفق السلاسل stringstream للتحليل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «دفق السلاسل stringstream للتحليل»؟
استخدم std::stringstream لتقسيم النص وتحليله إلى قيم ذات أنواع محددة تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «دفق السلاسل stringstream للتحليل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- std::string مقابل مصفوفات المحارف بأسلوب C
- عمليات السلاسل النصية: الربط والجزء الفرعي والبحث والاستبدال
- دفق السلاسل stringstream للتحليل
- تحويل السلاسل النصية: to_string وstoi