ما هي أفضل طريقة للعثور على صداع سلسلة واسعة مثل L "٪ S"؟

StackOverflow https://stackoverflow.com/questions/1473183

  •  16-09-2019
  •  | 
  •  

سؤال

هنا مثال على أحد الصداع أعني:

لدينا مشروع متعدد الأفلام يستخدم سلاسل Unicode في الغالب لتقديم النص إلى الشاشة. على Windows في VC ++ الخط:

swprintf(swWideDest, LEN, L"%s is a wide string", swSomeWideString);

يجمع بشكل جيد وطبع السلسلة الواسعة في السلسلة الواسعة الأخرى. ومع ذلك، يجب أن يكون هذا حقا:

swprintf(swWideDest, LEN, L"%ls is a wide string", swSomeWideString);

دون استبدال "٪ S" مع "٪ LS" هذا لن يعمل على منصات أخرى. نظرا لأن الاختبار في بيئتنا على Windows أسهل وأسرع وأبسط أقصى لتصحيح الأخطاء. هذا النوع من الأخطاء يمكن أن تمر بسهولة دون أن يلاحظها أحد.

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

أظن أن هناك العديد من الاختلافات في هذا النوع من الأخطاء، ونحن نستمتع بعد.

هل لدى أي شخص وسيلة لطيفة وأنيقة لإيجاد هذا النوع من الأخطاء؟

: د

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

المحلول

كما لا شيء من وظائف *printf الأسرة هي محاطة لك إما

  • ابحث عن أخطاء محتملة عبر تعبيرات منتظمة وإصلاحها يدويا
  • استخدام نهج آخر هو أنثيب، ربما بناء على stringstreams أو boost.format.

نصائح أخرى

قد ترغب في إلقاء نظرة على fastformat. في حالة Boost.format بطيئة للغاية لاحتياجاتك.

بالمقارنة مع stringstreams و boost.format:

  • iOStreams: fastformat.format هو أسرع من iOStreams، بين ~ 100-900٪، في جميع الحالات
  • Boost.format: fastformat.format هو أسرع من boost.format، بين ~ 400-1650٪، في جميع الحالات
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top