C++ الإدخال/الإخراج الأساسي: مثال Cout وCin وCerr
⚡ ملخص ذكي
C++ تعتمد عمليات الإدخال والإخراج على كائنات التدفق التي تنقل البيانات كتسلسلات بايت بين البرامج والأجهزة، حيث يقوم cin بقراءة مدخلات لوحة المفاتيح، بينما يقوم cout وcerr وclog بكتابة المخرجات إلى الشاشة.

ما هي التدفقات في C++?
C++ يوفر للمستخدمين عددًا من المكتبات التي يمكنهم استخدامها لأداء مهام الإدخال/الإخراج. يتم تنفيذ هذه المهام في شكل تسلسلات بايت، تسمى بشكل شائع التدفقات.
وتنقسم الأنهار إلى قسمين:
أنواع التدفقات
- تيار الإدخال: هذا هو نوع من الدفق حيث تتدفق البايتات من جهاز مثل لوحة المفاتيح إلى الذاكرة الرئيسية.
- تيار الإخراج: هذا هو نوع من الدفق حيث تتدفق البايتات في الاتجاه المعاكس، أي من الذاكرة الرئيسية ثم إلى الجهاز مثل شاشة العرض.
كيف تعمل التدفقات؟
C++ تعمل التدفقات على النحو التالي:
- أولاً، تتم تهيئة الدفق بالنوع الصحيح.
- بعد ذلك، يجب عليك تحديد مكان حدوث عمليات الإدخال/الإخراج باستخدام مؤشرات get/put.
- بعد الوصول إلى الموقع الصحيح في مجرى ما، يمكنك تنفيذ مهام الإدخال والإخراج باستخدام مشغلي >> و<< على التوالي.
جدول الوظائف
فيما يلي الوظائف المقدمة في ملف رأس stream.h:
| الفئه | وظائف |
|---|---|
| Filebuf | يقوم بتعيين مخازن الملفات للقراءة والكتابة. يحتوي على دالتين close() وopen() |
| com.fstreambase | إنها الفئة الأساسية للفئات ifstream وfstream وofstream. عملياتها مشتركة مع تدفقات الملفات. |
| إفستريم | إنها فئة تدفق ملف الإدخال لتوفير عمليات الإدخال. |
| اوفستريم | إنها فئة تدفق ملف الإخراج لتوفير عمليات الإخراج. |
| com.fstream | إنها فئة تدفق إدخال/إخراج. وهي تدعم عمليات الإدخال/الإخراج المتزامنة. |
C++ ملفات الرأس للإدخال/الإخراج
C++ يوفر ثلاث مكتبات تأتي مع وظائف لأداء مهام الإدخال والإخراج الأساسية. وهي تشمل:
- يوستريم: إنه اختصار لتدفق الإدخال/الإخراج القياسي. يأتي ملف الرأس هذا مزودًا بتعريفات لكائنات مثل cin/ cout/cerr.
- يومانية: إنه اختصار لمتلاعبي الإدخال والإخراج. تأتي المكتبة بوظائف يمكن استخدامها لمعالجة التدفقات. أنه يحتوي على تعريفات لكائنات مثل setw، setprecision، وغيرها.
- تيار: هذا ملف رأس لوصف دفق الملف. فهو يتعامل مع البيانات التي تتم قراءتها من الملف كمدخلات أو التي يتم كتابتها إلى ملف، كمخرجات.
تحظى الكلمات الرئيسية cin وcout بشعبية كبيرة في C++. يتم استخدامها لأخذ المدخلات وطباعة المخرجات، على التوالي. لاستخدامها، يجب عليك تضمين ملف رأس iostream في برنامجك. والسبب هو أنه تم تعريفها في ملف الرأس هذا. سيؤدي الفشل في تضمين ملف رأس iostream إلى حدوث خطأ. وهذا نتيجة لفشل من قبل C++ مترجم لفهم معنى الكلمات الرئيسية.
الكائنات الرئيسية المحددة في ملف رأس iostream هي cin وcout وcerr وclog. دعونا نناقشها.
الأمراض المنقولة جنسيا :: كوت
كائن cout هو مثيل لفئة iostream. يتم استخدامه لإنتاج الإخراج على جهاز إخراج قياسي، والذي يكون عادةً الشاشة. يتم استخدامه مع عامل إدراج الدفق (<<).
مثال
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
Code التفسير:
- قم بتضمين ملف رأس iostream حيث يتم تعريف كائن cout.
- قم بتضمين مساحة الاسم std حتى لا نضطر إلى استدعائها عند استخدام فئاتها.
- استدعاء الدالة الرئيسية (). يجب إضافة رمز البرنامج داخل نصه. القوس المتعرج الافتتاحي {يشير إلى بداية جسمه.
- أنشئ متغيرًا نصيًا باسم welcome لتخزين السلسلة Welcome to Guru99.
- اطبع قيمة السلسلة الترحيبية على وحدة التحكم. النهاية هي أ C++ الكلمة الأساسية تعني خط النهاية. يقوم بتحريك المؤشر لبدء طباعة النص في السطر التالي.
- يجب أن يقوم البرنامج بإرجاع القيمة عند التنفيذ الناجح.
- نهاية نص الوظيفة الرئيسية ().
الأمراض المنقولة جنسيا::سين
الكائن cin هو نسخة من فئة istream. يقرأ المدخلات من جهاز الإدخال، وهو لوحة المفاتيح. ويُستخدم عادةً مع extracعامل التشغيل (>>). مثالtracالكائن tion مسؤول عن extracإدخال البيانات عبر لوحة المفاتيح من كائن cin.
مثال
يوضح المثال التالي كيفية استخدام الكلمة الأساسية cin في C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
Code التفسير:
- قم بتضمين ملف رأس iostream في برنامجنا. يتم تعريف كائن cin في ملف الرأس هذا.
- قم بتضمين مساحة الاسم std لاستخدام فئاتها. لن تضطر إلى الاتصال بـ std عند استخدام فئاته.
- استدعاء الدالة الرئيسية (). يجب إضافة رمز البرنامج داخل نصه.
- بداية جسم البرنامج.
- نعلن متغير صحيح رقم مسمى.
- اطبع رسالة على الشاشة تطالب المستخدم بإدخال رقم.
- اقرأ القيمة التي أدخلها المستخدم على وحدة التحكم من لوحة المفاتيح.
- اطبع القيمة المقروءة أعلاه على وحدة التحكم بجانب النص الآخر.
- يجب أن يُرجع البرنامج قيمة إذا تم تنفيذه بنجاح.
- نهاية جسم الوظيفة الرئيسية.
الأمراض المنقولة جنسيا::cerr
يشكل كائن cerr دفق الخطأ القياسي لإخراج الأخطاء C++. Cerr هو مثيل لفئة ostream. كائن cerr غير مخزن مؤقتًا. وهذا يعني أنه يُستخدم عند عرض رسالة خطأ على الفور.
نظرًا لأنه غير مخزن مؤقتًا، فإنه لا يخزن رسالة الخطأ لعرضها لاحقًا. يتم استخدامه مع عامل إدراج التدفق (<<).
مثال
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
Code التفسير:
- قم بتضمين ملف رأس iostream حيث تم تعريف كائن cerr.
- قم بتضمين مساحة الاسم std حتى لا نضطر إلى استدعائها عند استخدام فئاتها.
- استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل جسمه. يمثل القوس المتعرج الافتتاحي بداية نص الوظيفة.
- استخدم كائن cerr لطباعة خطأ على وحدة التحكم.
- يجب أن يقوم البرنامج بإرجاع قيمة عند التنفيذ الناجح.
- نهاية جسم الوظيفة الرئيسية.
الأمراض المنقولة جنسيا::تسد
كائن clog هو مثيل لفئة ostream. يتم استخدامه لإظهار الأخطاء على الشاشة القياسية، وهي الشاشة. إنه مشابه لكائن cerr، ولكنه مخزن مؤقتًا. نظرًا لأنه مخزن مؤقتًا، فإنه يخزن رسالة الخطأ في المخزن المؤقت حتى يتم ملء المخزن المؤقت/تفريغه. يتم استخدامه مع عامل إدراج الدفق (<<).
مثال
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
Code التفسير:
- بما في ذلك ملف رأس iostream الذي تم فيه تعريف كائن الانسداد.
- بما في ذلك مساحة الاسم std حتى نتمكن من استخدام فئاتها دون استدعائها.
- استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل جسمه. يمثل { بداية نص الوظيفة.
- استخدم كائن الانسداد لطباعة خطأ على الإخراج القياسي، الشاشة.
- يجب أن يقوم البرنامج بإرجاع قيمة عند اكتماله بنجاح.
- نهاية نص الدالة الرئيسية ().
معالجة الأخطاء مع تدفقات الإدخال والإخراج
كما تقوم كائنات التدفق نفسها بالإبلاغ عما إذا كانت العملية قد نجحت، وهو ما تكشفه عمليات التحقق من حالة التدفق.
للتحقق مما إذا كان الدفق صالحًا أم لا، يمكنك استخدامه كقيمة منطقية.
هنا مثال:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
للحصول على مزيد من التفاصيل حول حالة البث، يمكنك استخدام هذه الوظائف:
- good()- سيعود صحيحًا إذا كان كل شيء على ما يرام.
- bad()- سيعود صحيحًا في حالة حدوث خطأ فادح.
- fail()- سوف يعود true بعد عملية تدفق غير ناجحة.
- eof()- سيعود صحيحًا إذا وصل إلى نهاية الملف.
لمعرفة ما إذا كانت عملية القراءة/الكتابة معينة قد فشلت، اختبر نتيجة القراءة.
على سبيل المثال، للتحقق مما إذا كان المستخدم قد أدخل عددًا صحيحًا صالحًا، قم بما يلي:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }




