"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية التحقق مما إذا كانت سلسلة C++ تمثل عددًا صحيحًا؟

كيفية التحقق مما إذا كانت سلسلة C++ تمثل عددًا صحيحًا؟

تم النشر بتاريخ 2024-11-12
تصفح:614

How to Check If a C   String Represents an Integer?

التحقق مما إذا كانت السلسلة C عددًا صحيحًا

في مواقف معينة، مثل عند معالجة إدخال المستخدم، قد يكون من الضروري التمييز بين السلاسل التي تمثل الأعداد الصحيحة وتلك التي لا تمثل. لحسن الحظ، هناك عدة طرق لتحقيق هذه المهمة في لغة C.

أحد الأساليب هو الاستفادة من الدالة C strtol، التي تحول تمثيل سلسلة من عدد صحيح إلى قيمة عددية. لاستخدام strtol، يمكنك كتابة دالة بسيطة تتضمن عملية التحويل:

inline bool isInteger(const std::string &s) {
  if (s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != ' '))) return false;

  char *p;
  strtol(s.c_str(), &p, 10);

  return (*p == 0);
}
  • نظرة عامة : تتحقق الوظيفة مما إذا كانت السلسلة المقدمة تمثل عددًا صحيحًا.
  • السلاسل الفارغة : تتحقق أولاً مما إذا كان السلسلة فارغة.
  • الرموز البادئة: تتحقق أيضًا من الأحرف البادئة غير الرقمية، مثل ' ' أو '-'، وترجع خطأ إذا لم تكن موجودة (تشير إلى عدم وجود -عدد صحيح).
  • تحويل strtol: تستخدم الوظيفة وظيفة strtol لإجراء التحويل. إذا واجه strtol حرفًا غير رقمي، فإنه يعين عنوان هذا الحرف للمؤشر p.
  • تقييم النتيجة
  • : إذا كان p لا يشير إلى نهاية السلسلة (يمثلها الحرف '\0')، فهذا يعني أن strtol واجه حرفًا غير رقمي. في هذه الحالة، ترجع الدالة خطأ، مما يشير إلى أن s ليس عددًا صحيحًا.
  • توفر هذه الدالة طريقة موثوقة لتحديد ما إذا كان من الممكن تحليل سلسلة معينة كعدد صحيح. ومن خلال دمجها في التعليمات البرمجية الخاصة بك، يمكنك التعامل مع السلاسل التي تمثل الأعداد الصحيحة وغير الصحيحة بشكل مناسب.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3