الاختلافات بين std :: endl و '\ n' لتطبيقات Streambuffer

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

  •  27-10-2019
  •  | 
  •  

سؤال

أحاول حاليًا تنفيذ فئة فرعية من stringbuf للسماح للمخزن المؤقت بترميز رموز معينة ('\ n' في حالتي) واتخاذ إجراء في حالة حدوث هذا الحرف (تفريغ الرسالة إلى المسجل ومسح المخزن المؤقت بعد ذلك في حالتي). لتحقيق هذا الهدف ، تجاوزت sputc (لتنفيذ مراقبة لـ '\ n') و xsputn (لاستخدام sputc بالفعل ، حيث لا يبدو أن تنفيذ GCC يقوم بذلك افتراضيًا). لأغراض تصحيح الأخطاء ، تركت sputc يكتب كل حرف يتم تمريره إليه إلى stdout.

الآن هذا هو سؤالي: إذا استخدمت شيئًا مثل Genacodicetagpre

يستقبل sputc كل حرف باستثناء '\ n' الذي يجب أن يتم إدخاله بواسطة std :: endl ، لذلك لا يتم تنفيذ الإجراء المتوقع لأن '\ n' لم يتم تمريره. إذا استخدمت شيئًا مثل Genacodicetagpre

أو حتى Genacodicetagpre

يعمل كل شيء كما هو متوقع ويحصل تطبيق sputc الخاص بي على حرف \ n.

لذا ، سؤالي هو: ألا يجب أن يفعل كلا سطري الكود نفس الشيء تمامًا فيما يتعلق بالسلسلة النصية الموجودة في الخلف ، وإذا لم يكن الأمر كذلك ، فما الطرق الأخرى التي يتعين علي تجاوزها للحصول على "\ n"؟

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

المحلول

لا يمكنك تجاوز رمز الترقيم العام لأن رمز الترقيم العام ليس افتراضيًا.تحتاج إلى زيادة التحميل على الكود البرمجي العام ورمز الترقيم العام وفحص التسلسل المعلق بالكامل بحثًا عن تكرارات الشفرة العامة.

لا يجب أن تفرط في تحميل رمز الترميز العام ما لم تتمكن من القيام بشيء مثالي لأنك تعرف شيئًا مميزًا عن الجهاز الذي يدعم نوع البث.

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