Mohssen A Mohssen نشر 24 نوفمبر 2021 أرسل تقرير نشر 24 نوفمبر 2021 أرى في كثير من الأحيان إستخدام الرمز n\ في نهاية النص عند الطباعة وفي أحيان أخرى أجد أن الكود يستعمل std::endl في نهاية النص، لذلك ما الفرق بين الكود التالي: std::cout << "Hello, Wolrd\n"; وهذا الكود: std::cout << "Hello, Wolrd" << std::endl; 2 اقتباس
1 سامح أشرف نشر 24 نوفمبر 2021 أرسل تقرير نشر 24 نوفمبر 2021 عندما تحاول أن تقوم بطباعة أكثر من نص، لإغنه يتم تخزين هذه النصوص في ما يسمى بـ Buffer وبعد ذلك يتم عرض كل النصوص مرة واحدة على الشاشة (أو كتابتها في ملف) وتسمى هذه العملية بالصرف flushing، فعلى سبيل المثال: #include <iostream> int main() { for (char i='A'; i <= 'Z'; i++) { std::cout << i << endl; } return 0; } الكود السابق يقوم بطباعة الحروف من A إلى Z وفي كل دورة يتم عمل صرف Flushing للنص وإظهاره على الشاشة. بينما في الكود التالي: #include <iostream> int main() { for (char i='A'; i <= 'Z'; i++) { std::cout << i << "\n"; } return 0; } فإنه يتم تخزين كل الحروف الـ Buffer وبعد ذلك يتم عرض كل الحروف مرة واحدة. بالتأكيد فإن الكود الثاني أفضل من ناحية الأداء لأن الكود يقوم بعرض الحروف مرة واحدة على الشاشة، بينما الكود الأول يقوم بعمل Flushing لكل حرف في كل دورة. لذلك يفضل دائمًا أن تستعمل الرمز n\ قدر الإمكان بدلًا من إستخدام std::endl ملاحظة أخرى وهي أنه يمكن إستخدام الرمز n\ في نهاية النص كالتالي: std::cout << "Hello\n"; std::cout << "Hello" << std::endl; لاحظ أن السطر الأول يقوم بإستخدام المعامل >> مرة واحدة بينما السطر الثاني فإن يقوم بإستدعاء المعامل >> مرتين، وهذا الأمر قد يؤثر على أداء البرامج التي تعتمد على الخيوط threads بشكل أساسي. بالتوفيق، تحياتي. 3 1 اقتباس
السؤال
Mohssen A Mohssen
أرى في كثير من الأحيان إستخدام الرمز n\ في نهاية النص عند الطباعة وفي أحيان أخرى أجد أن الكود يستعمل std::endl في نهاية النص، لذلك ما الفرق بين الكود التالي:
وهذا الكود:
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.