Avatar ·

تقسيم سلسلة نصية في C++ باستخدام فاصل (string delimiter) — كيف يتم split؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم C++ وواجهت مهمة يتم حلها في لغات أخرى بوظيفة واحدة. أحتاج إلى تقسيم سلسلة نصية إلى أجزاء بناءً على فاصل (مثل فاصلة أو سلسلة فرعية "::"). في Python أكتب `"a,b,c".split(",")` وأحصل على قائمة. في C++ لا أجد شيئًا مشابهًا في المكتبة القياسية. يوجد `strtok` من C، لكنه يعمل مع `char*`، بينما أحتاج للعمل مع `std::string`. بالإضافة إلى ذلك، `strtok` يعدل السلسلة الأصلية وليس آمنًا للخيوط. حاولت كتابة حل خاص بي لكنه يعمل بشكل غير صحيح: ```cpp #include #include std::vector split(std::string s, std::string delimiter) { size_t pos = 0; std::vector tokens; while ((pos = s.find(delimiter)) != std::string::npos) { std::string token = s.substr(0, pos); tokens.push_back(token); s.erase(0, pos + delimiter.length()); } tokens.push_back(s); return tokens; } ```