سؤال

أنا أكتب أداة سطر الأوامر لنظام التشغيل 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;

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