يعتبر ترميز السلسلة عملية أساسية في البرمجة. ومع ذلك، عند العمل مع وظائف C مثل strtok()، والتي تتطلب سلسلة char*، فإن ترميز std::string مباشرة يمكن أن يواجه تحديات.
لاستخدام strtok() مع std::string، أحد الخيارات هو تحويلها إلى const char* باستخدام .c_str(). ومع ذلك، قد لا يكون هذا مرغوبًا دائمًا، لأنه يوفر تمثيلًا للقراءة فقط للسلسلة.
الحل الأكثر ملاءمة هو الاستفادة من std::istringstream بدلاً من strtok( ). يسمح std::istringstream بالترميز المستند إلى الدفق لسلسلة std::string. إليك مثال:
#include#include #include int main() { std::string myText("some-text-to-tokenize"); std::istringstream iss(myText); std::string token; while (std::getline(iss, token, '-')) { std::cout ينشئ هذا الرمز std::istringstream من std::string ويقرأ الرموز المميزة منه حتى يواجه المحدد المحدد ('-' في هذه الحالة).
خيارات إضافية
للحصول على إمكانات ترميزية أكثر تقدمًا، توفر المكتبات مثل Boost حلولاً شاملة توفر مرونة وميزات أكبر مقارنةً بـ strtok().
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3