الترجيح std :: cout للعودة إلى بداية الخط
-
27-09-2019 - |
سؤال
أنا أكتب أداة سطر الأوامر لنظام التشغيل Mac OS X تقوم بمعالجة مجموعة من الملفات. أرغب في إظهار المستخدم للملف الحالي الذي تتم معالجته ، لكن لا أريد ملفات بازليون تلوث نافذة الطرفية.
بدلاً من ذلك ، أود استخدام سطر واحد لإخراج مسار الملف ، ثم أعد استخدام هذا السطر للملف التالي. هل هناك حرف (أو بعض التعليمات البرمجية الأخرى) للإخراج إلى std::cout
لانجاز هذا؟
أيضًا ، إذا أردت إعادة استهداف هذه الأداة لنظام التشغيل Windows ، فهل سيكون الحل هو نفسه لكلا النظامين؟
المحلول
يجب أن تعمل " r" لكل من Windows و Mac OS X.
شيء مثل:
std::cout << "will not see this\rwill see this" << std::flush;
std::cout << std::endl; // all done
نصائح أخرى
ليس لدي إمكانية الوصول إلى جهاز Mac ، ولكن من وجهة نظر وحدة التحكم الخالصة ، يعتمد هذا إلى حد كبير على كيفية تعامله مع عودة النقل وأحرف تغذية الخط. إذا كنت تستطيع إرسال واحدة أو أخرى حرفيًا إلى وحدة التحكم ، فأنت تريد إرسالها فقط عودة عربة.
أنا متأكد من أن MAC يعامل كل من عوائد النقل وملفات الخط بشكل مختلف عن *Nix & Windows.
إذا كنت تبحث عن تحديثات في مكانها (مثل الكتابة فوق الخط الحالي) ، فإنني أوصي بالبحث في curses
ليب. يجب أن يوفر هذا منصة وسيلة مستقلة لفعل ما تبحث عنه. (لأنه ، حتى باستخدام C ++ القياسي ، لا توجد وسيلة مستقلة من النظام الأساسي لما تطلبه).
std :: cout يفسر " r" على أنه يعود إلى خطوط الخط ، إذا لم تكن قد أضفت "<< endl" في كل مرة ، استخدم " n"
std::cout << "this will work!\nSee... a new line!" << std::endl;