في هذه المقالة، ستتعرف على الدالة std::stol في لغة C++ مع تركيب الجملة والأمثلة الخاصة بها.
ما هو std::stol()؟
ال مكتبة النماذج القياسية (STL) في C++ يتضمن الأمراض المنقولة جنسيا::ستول () وظيفة، والتي تم تصميمها خصيصا للتحويل سلاسل إلى أعداد صحيحة طويلة . تعتبر هذه الوظيفة مفيدة بشكل خاص عند العمل مع إدخال المستخدم أو قراءة البيانات من مصادر خارجية - حيث يتم تقديم الإدخال عادةً بتنسيق سلسلة. تقوم بإرجاع عدد صحيح طويل مكافئ بعد تلقي سلسلة كمدخل. يتم طرح استثناء من النوع std::invalid_argument أو std::out_of_range إذا كان التحويل غير ممكن أو إذا كانت سلسلة الإدخال تحتوي على أحرف ليست جزءًا من رقم صالح.
بناء الجملة:
لديه بناء الجملة التالي:
long std::stol(const std::string& str, size_t* pos = 0, int base = 10);
شارع: النص الذي يجب تغييره إلى عدد صحيح طويل.
نقاط البيع: فهرس الحرف الأول غير المحول في السلسلة، والذي تم تخزينه كمؤشر إلى كائن size_t. إذا لم يكن ذلك مطلوبًا، فيمكن تعيين هذه المعلمة الاختيارية على nullptr.
التعامل مع السلسلة في C++
قاعدة: القاعدة العددية للتحويل. عشرة هو الافتراضي.
قيمة الإرجاع: يتم إرجاع القيمة الرقمية التي تم تحليلها من سلسلة الإدخال بواسطة الدالة كعدد صحيح طويل.
الاستثناءات: تطرح الدالة استثناءً إذا تعذر إكمال التحويل أو إذا كانت الأحرف الموجودة في سلسلة الإدخال غير صالحة. إذا لم يكن من الممكن إجراء أي تحويل، فإن الاستثناءات المحتملة هي الأمراض المنقولة جنسيا::invalid_argument و الأمراض المنقولة جنسيا::out_of_range إذا كانت القيمة المحولة أكبر من النطاق القابل للتمثيل لفترة طويلة.
استخدم حالات:
الأمراض المنقولة جنسيا::ستول () مفيد لتحويل المدخلات الرقمية التي يتم تلقيها من المستخدمين بتنسيق سلسلة إلى نوع رقمي بحيث يمكن معالجتها بشكل أكبر.
قراءة البيانات الرقمية في الملفات التي تحتوي على سلاسل كتمثيل للبيانات.
يتضمن التحقق من صحة البيانات التأكد من أن مدخلات المستخدم تمثل الأرقام الطويلة بدقة من خلال التحقق من صحتها والتحقق منها.
مثال البرنامج 1:
لنأخذ مثالاً لتوضيح الاستخدام الأمراض المنقولة جنسيا :: وظيفة سرقة في سي ++.
#include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; }
انتاج:
توضيح:
- متغير سلسلة يسمى رقم تتم تهيئته بالقيمة '12345' في بداية البرنامج.
- ينتقل الرمز إلى كتلة المحاولة، مما يشير إلى أنه سيحاول تشغيل البيانات الموجودة بداخله. يتم التعامل مع الاستثناءات المحتملة هنا.
- يحاول البرنامج استخدام الأمراض المنقولة جنسيا::ستول () لتحويل السلسلة numStr إلى عدد صحيح طويل داخل كتلة المحاولة.
- يتم الاحتفاظ بالنتيجة في النتيجة المتغيرة إذا نجح التحويل.
- تتم بعد ذلك طباعة الرقم الذي تم تحويله بنجاح إلى الإخراج القياسي بواسطة البرنامج.
- تعالج إحدى كتل الالتقاط أي استثناءات تنشأ أثناء التحويل.
- تتم طباعة رسالة خطأ تفيد بأن الوسيطة غير صالحة إذا كان الاستثناء من النوع std::invalid_argument.
- تتم طباعة رسالة خطأ تفيد بأن نتيجة التحويل خارج النطاق الصالح إذا كان الاستثناء من النوع std::out_of_range.
- يقوم البرنامج بإرجاع 0 إلى نظام التشغيل، مما يدل على التنفيذ الناجح، وتنتهي الوظيفة الرئيسية.
باختصار، يحاول الكود استخدام الأمراض المنقولة جنسيا::ستول () تعمل داخل كتلة المحاولة لتحويل السلسلة '12345' إلى عدد صحيح طويل. تتم طباعة النتيجة في حالة نجاح التحويل. فهو يلتقط الاستثناءات ويطبع رسالة الخطأ ذات الصلة في حالة ظهورها (إما بسبب وسيطة غير صحيحة أو لأن النتيجة خارج النطاق).
وأخيرا، يعود البرنامج 0، مما يدل على الانتهاء بنجاح.
مثال البرنامج 2:
لنأخذ مثالاً آخر لتوضيح الاستخدام الأمراض المنقولة جنسيا :: وظيفة سرقة في سي ++.
#include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end): '; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye! '; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; }
انتاج:
توضيح :
- في هذا المثال، يُطلب من المستخدم إدخال قيم سلسلة ليتم تحويلها.
- سيستمر التطبيق في قبول إدخال المستخدم حتى يقوم المستخدم بإدخاله 'مخرج' باستخدام حلقة while.
- الدخول 'مخرج' يؤدي هذا البرنامج إلى طباعة رسالة وداع وإنهاء الحلقة.
- إذا لم يكن الأمر كذلك، فإنه يحاول استخدام الأمراض المنقولة جنسيا::سرق لتحويل الإدخال إلى فترة طويلة.
- تتم طباعة القيمة المحولة في حالة نجاح التحويل.
- فهو يلتقط الاستثناءات (الوسائط غير الصالحة، خارج النطاق)، ويطبع رسالة خطأ، ويستمر.
- أثناء انتظار إدخال المستخدم الجديد، تنتقل الحلقة إلى التكرار التالي.