في C ++ ما هو الفرق الأساسي بين الأمراض المنقولة جنسياً:: cout و fprintf؟ هل الأفضل أو أسرع من الآخر؟


الاجابه 1:

باستخدام std :: cout ، يتم استدعاء العامل الزائد << على الوسيطة بينما في fprintf ، يتم تحويل الوسيطة إلى سلسلة. المنطق الأساسي وراء كلا يبقى كما هو.

يكون cstdio أسرع مع تمكين المزامنة ولكن يصبح iostream أسرع ، وفي بعض الحالات يكون أسرع بكثير إذا قمت بتعطيل المزامنة بين الاثنين. في رمز C ++ الجيد ، يجب استخدام iostream فقط ، وبالتالي يمكنك تعطيل المزامنة عن طريق استدعاء std :: ios :: sync_with_stdio (false).

ملحوظة

خلافًا للاعتقاد الشائع ، إذا كانت الوظيفة نفسها موجودة لكل من مكتبات C ++ ومكتبات C ، فإن تطبيق C ++ سيكون دائمًا أفضل دائمًا بسبب تحسين برنامج التحويل البرمجي.


الاجابه 2:

نعم ، الأمراض المنقولة جنسيا :: cout هو أفضل. إنه std :: ostream ، وكذلك std :: stringstream ، وهو مماثل لمتغير printf المسمى sprintf.

هناك العديد من المشاكل مع printf.

  1. يستخدم سلسلة تنسيق لتحديد ليس فقط كيفية طباعة الوسائط المتبقية ، ولكن أيضًا لتحديد أنواع هذه الأنواع ، والتي لا تتضمن نظام الكتابة ، لذلك لا يعرف المترجم أنواع الشيء الذي أنت الطباعة. لحل هذه المشكلة ، يحاول أحدث برامج التحويل البرمجي C و C ++ تفسير هذه السلسلة في وقت الترجمة ، وهو معاملة خاصة لهذه الوظيفة. لا يجب التعامل مع أي وظيفة بشكل خاص. إنها تستخدم الصيغ التي تمحو النوع ، لذا فإن المشكلة رقم 1 ضرورية للغاية ، عندما لا تكون كذلك.

يحتوي std :: ostream ، مثل std :: cout ، على عامل << المحدد لكل نوع تريد طباعته ، ويمكن لمعظمهم الاتصال بـ << عامل التشغيل لأنواعهم الأولية لإنجاز هذه المهمة. تعرف كل وظيفة من عوامل << النوع الذي تقوم بطباعته ، وهي تكتب بشكل آمن في وقت الترجمة ، وبالتالي فإن مشكلة وقت التشغيل المتمثلة في عدم تمرير وسيطات كافية للطباعة على أساس سلسلة التنسيق الخاصة بها لم تعد مشكلة لأن std :: ostream لم يعد ' ر بحاجة الى سلسلة الشكل.

تعتمد فروق السرعة تمامًا على التنفيذ ، لكن std :: cout لديها القدرة على أن تكون أسرع من printf خلال التضمين.


الاجابه 3:

نعم ، الأمراض المنقولة جنسيا :: cout هو أفضل. إنه std :: ostream ، وكذلك std :: stringstream ، وهو مماثل لمتغير printf المسمى sprintf.

هناك العديد من المشاكل مع printf.

  1. يستخدم سلسلة تنسيق لتحديد ليس فقط كيفية طباعة الوسائط المتبقية ، ولكن أيضًا لتحديد أنواع هذه الأنواع ، والتي لا تتضمن نظام الكتابة ، لذلك لا يعرف المترجم أنواع الشيء الذي أنت الطباعة. لحل هذه المشكلة ، يحاول أحدث برامج التحويل البرمجي C و C ++ تفسير هذه السلسلة في وقت الترجمة ، وهو معاملة خاصة لهذه الوظيفة. لا يجب التعامل مع أي وظيفة بشكل خاص. إنها تستخدم الصيغ التي تمحو النوع ، لذا فإن المشكلة رقم 1 ضرورية للغاية ، عندما لا تكون كذلك.

يحتوي std :: ostream ، مثل std :: cout ، على عامل << المحدد لكل نوع تريد طباعته ، ويمكن لمعظمهم الاتصال بـ << عامل التشغيل لأنواعهم الأولية لإنجاز هذه المهمة. تعرف كل وظيفة من عوامل << النوع الذي تقوم بطباعته ، وهي تكتب بشكل آمن في وقت الترجمة ، وبالتالي فإن مشكلة وقت التشغيل المتمثلة في عدم تمرير وسيطات كافية للطباعة على أساس سلسلة التنسيق الخاصة بها لم تعد مشكلة لأن std :: ostream لم يعد ' ر بحاجة الى سلسلة الشكل.

تعتمد فروق السرعة تمامًا على التنفيذ ، لكن std :: cout لديها القدرة على أن تكون أسرع من printf خلال التضمين.


الاجابه 4:

نعم ، الأمراض المنقولة جنسيا :: cout هو أفضل. إنه std :: ostream ، وكذلك std :: stringstream ، وهو مماثل لمتغير printf المسمى sprintf.

هناك العديد من المشاكل مع printf.

  1. يستخدم سلسلة تنسيق لتحديد ليس فقط كيفية طباعة الوسائط المتبقية ، ولكن أيضًا لتحديد أنواع هذه الأنواع ، والتي لا تتضمن نظام الكتابة ، لذلك لا يعرف المترجم أنواع الشيء الذي أنت الطباعة. لحل هذه المشكلة ، يحاول أحدث برامج التحويل البرمجي C و C ++ تفسير هذه السلسلة في وقت الترجمة ، وهو معاملة خاصة لهذه الوظيفة. لا يجب التعامل مع أي وظيفة بشكل خاص. إنها تستخدم الصيغ التي تمحو النوع ، لذا فإن المشكلة رقم 1 ضرورية للغاية ، عندما لا تكون كذلك.

يحتوي std :: ostream ، مثل std :: cout ، على عامل << المحدد لكل نوع تريد طباعته ، ويمكن لمعظمهم الاتصال بـ << عامل التشغيل لأنواعهم الأولية لإنجاز هذه المهمة. تعرف كل وظيفة من عوامل << النوع الذي تقوم بطباعته ، وهي تكتب بشكل آمن في وقت الترجمة ، وبالتالي فإن مشكلة وقت التشغيل المتمثلة في عدم تمرير وسيطات كافية للطباعة على أساس سلسلة التنسيق الخاصة بها لم تعد مشكلة لأن std :: ostream لم يعد ' ر بحاجة الى سلسلة الشكل.

تعتمد فروق السرعة تمامًا على التنفيذ ، لكن std :: cout لديها القدرة على أن تكون أسرع من printf خلال التضمين.


الاجابه 5:

نعم ، الأمراض المنقولة جنسيا :: cout هو أفضل. إنه std :: ostream ، وكذلك std :: stringstream ، وهو مماثل لمتغير printf المسمى sprintf.

هناك العديد من المشاكل مع printf.

  1. يستخدم سلسلة تنسيق لتحديد ليس فقط كيفية طباعة الوسائط المتبقية ، ولكن أيضًا لتحديد أنواع هذه الأنواع ، والتي لا تتضمن نظام الكتابة ، لذلك لا يعرف المترجم أنواع الشيء الذي أنت الطباعة. لحل هذه المشكلة ، يحاول أحدث برامج التحويل البرمجي C و C ++ تفسير هذه السلسلة في وقت الترجمة ، وهو معاملة خاصة لهذه الوظيفة. لا يجب التعامل مع أي وظيفة بشكل خاص. إنها تستخدم الصيغ التي تمحو النوع ، لذا فإن المشكلة رقم 1 ضرورية للغاية ، عندما لا تكون كذلك.

يحتوي std :: ostream ، مثل std :: cout ، على عامل << المحدد لكل نوع تريد طباعته ، ويمكن لمعظمهم الاتصال بـ << عامل التشغيل لأنواعهم الأولية لإنجاز هذه المهمة. تعرف كل وظيفة من عوامل << النوع الذي تقوم بطباعته ، وهي تكتب بشكل آمن في وقت الترجمة ، وبالتالي فإن مشكلة وقت التشغيل المتمثلة في عدم تمرير وسيطات كافية للطباعة على أساس سلسلة التنسيق الخاصة بها لم تعد مشكلة لأن std :: ostream لم يعد ' ر بحاجة الى سلسلة الشكل.

تعتمد فروق السرعة تمامًا على التنفيذ ، لكن std :: cout لديها القدرة على أن تكون أسرع من printf خلال التضمين.