Avatar ·

كيفية التكرار عبر الكلمات في سلسلة نصية في C++: تحليل السلسلة إلى tokens

مرحباً بالجميع! أنا مبتدئ في C++ (كنت أكتب بلغة Python سابقاً) وواجهت مهمة تبدو بسيطة لكنها تسبب لي حيرة. أحتاج إلى تقسيم سلسلة نصية إلى كلمات فردية والتكرار عليها في حلقة. في Python يتم ذلك بسطر واحد: `for word in sentence.split():`. لكن في C++ كان الأمر أكثر تعقيداً. إليكم مثال على مهمتي. لدي سلسلة نصية تحتوي على جملة: ```cpp std::string text = "Hello, world! This is a test."; ``` أحتاج إلى الحصول على كل كلمة على حدة: "Hello,", "world!", "This", "is", "a", "test." (أو بدون علامات الترقيم - هذه تفاصيل). جربت استخدام `std::stringstream`: ```cpp std::stringstream ss(text); std::string word; while (ss >> word) { std::cout << word << std::endl; } ``` هذا يعمل، لكن فقط إذا كانت الكلمات مفصولة بمسافات. ماذا أفعل إذا كانت الفواصل مختلفة - فواصل، نقاط، علامات تبويب؟ أو إذا كانت السلسلة مأخوذة من ملف CSV؟ بالإضافة إلى ذلك، كيف يمكن معالجة السلاسل الفارغة أو السلاسل التي تحتوي على عدة مسافات متتالية بشكل صحيح؟ سمعت عن