سؤال

لدي سلسلة التي تحتوي على (أرقام) قيمة عددية و أريد الحصول على هذه القيمة كما int.أنا على علم بأن هناك طرق أخرى للقيام بذلك مثل atoi();ومع ذلك, أود حقا أن استخدام سطحي للقيام بذلك.هل هذا تحليل/وظيفة التحويل موجودة ؟

هل كانت مفيدة؟

المحلول

سطحي يوفر الكثير من المكتبة القياسية C مع السلامة بالتحقق من المدخلات ، والتحسينات حيث العملية.

وظيفة كنت تبحث عن g_ascii_strtoll().

متحذلق الإضافة

atoi() يعامل لغة بنفس الطريقة strtol و g_ascii_strtoll().جدا قراءة متأنية manpages و سطحي وثائق تكشف عن هذا.هنا بعض المقتطفات تلك التي لا يمكن RTFM:

atoi()

على atoi() وظيفة تحويل الجزء الأول من السلسلة وأشار إلى nptr إلى int.السلوك هو نفس strtol(nptr, (char **) NULL, 10); إلا أن atoi() لا يكشف عن الأخطاء.

strtol()

في أماكن أخرى من "ج" لغة, سلاسل أخرى قد تكون مقبولة.(على سبيل المثال ، فاصل الآلاف من الإعدادات المحلية الحالية قد تكون معتمدة.)

g_ascii_strtoll()

تحويل سلسلة إلى gint64 القيمة.هذه الوظيفة يتصرف مثل معيار strtoll() الدالة في لغة C.وهو يفعل ذلك من دون تغيير الواقع الحالي لغة ، لأن ذلك من شأنه أن لا يكون مؤشر الترابط-الآمن.

تغيير الإعدادات المحلية

إذا لم يكن هذا بلا لغة بما فيه الكفاية, يمكنك تعيين الإعدادات المحلية من خلال متغيرات البيئة ، و/أو صريحة تدعو إلى setlocale()

نصائح أخرى

والخصلة هي مكتبة للأغراض العامة التي توفر قاعدة مشتركة لتطوير التطبيقات. هذا لا يعني الخصلة reimplements كل مكتبة C القياسية، ولكن بدلا من ذلك الملخصات مهما كانت غير متوفرة (أو لا تتفق) في جميع الأنظمة الأساسية المعتمدة.

وهكذا، وباختصار، يجب عليك استخدام وظيفة atoi() القياسية: الخصلة تطبق فقط gdouble وgint64 المتغيرات

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top