دستورات ورودی و خروجی در زبان ++C

کتابخانه‌های استاندارد ++C مجموعه گسترده‌ای از امکانات برای ورودی/خروجی تدارک دیده که در فصول بعدی با آنها آشنا خواهیم شد. این فصل ساده‌ترین و پرکاربردترین عملیات ورودی/خروجی (I/O) برای برنامه‌نویسی ++C را تشریح می‌کند.

ورودی/خروجی در ++C با استفاده از استریم‌ها (stream) صورت می‌گیرد، استریم‌ها دنباله‌ای از بایت‌ها می‌باشند. اگر بایت از یک دستگاه مانند صفحه کلید، ‌هارد دیسک یا اتصالی از شبکه و… به حافظه اصلی جریان یابد، آن عملیات، عملیات ورودی نامیده می‌شود و اگر بایت‌ها از حافظه اصلی به دستگاه‌هایی مانند صفحه نمایش، چاپگر،‌ هارد دیسک و یا اتصالی از شبکه و… جاری شود، عملیات خروجی نامیده می‌شود.

هدر فایل‌های کتابخانه I/O

هدرهای زیر هدر فایل‌های مهم برای برنامه‌های ++C می‌باشند.

ردیف

هدر فایل و توابع و توضیح آنها

1

<iostream>

این فایل اشیا cin، cout، cerr و clog را تعریف می‌کند که به ترتیب مربوط به استریم استاندارد ورودی، استریم استاندارد خروجی، استریم خطای استاندارد بافرنشده و استریم خطای استاندارد بافرشده می‌باشند.

2

<iomanip>

این فایل سرویس‌های مفید برای انجام قالب بندی (فرمت) I/O با استفاده از manipulator استریم‌های پارمتربندی شده، مانند setw و setprecision را اعلان می‌کند.

3

<fstream>

این فایل سرویس‌هایی برای پردازش فایل تحت کنترل کاربر اعلان می‌کند. درباره این فایل در فصل فایل‌ها و استریم‌ها به تفصیل صحبت خواهیم کرد.

استریم استاندارد خروجی (cout)

شی cout نمونه‌ای (instance) از کلاس ostream می‌باشد. گفته می‌شود که شی cout به دستگاه استاندارد خروجی، که معمولاً صفحه نمایش است متصل می‌باشد. cout همراه با عملگر درج استریم (stream insertin object) استفاده می‌شود. این عملگر به صورت دو علامت کوچکتر،یعنی >> نوشته می‌شود.مثال زیر نحوه استفاده از آنها را نشان می‌دهد.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Hello C++";
 
   cout << "Value of str is : " << str << endl;
}

با اجرا و کامپایل کد فوق، خروجی زیر تولید خواهد شد.

Value of str is : Hello C++

کامپایلر ++C همچنین نوع داده‌ای که قرار است به خروجی ارسال شود را مشخص کرده و عملگر درج متناسب با آن را برای نمایش انتخاب می‌کند. عملگر >> به آیتم‌های داده خروجی درونی یعنی integer، float، double، string و یا اشاره‌گر اورلود (overload) می‌شود.

مطلب پیشنهادی:  کامنت گذاری در ++C

همانند مثال بالا، عملگر درج >> را می‌توان در یک دستور بیش از یک بار استفاده کرد. عبارت endl برای اضافه کردن کارکتر خط جدید به انتهای خط به کار می‌رود.

استریم استاندارد ورودی (cin)

شی cin نمونه‌ای از کلاس istream می‌باشد. گفته می‌شود که شی cin متصل به دستگاه ورودی، که معمولاً صفحه کلید است می‌باشد. Cin معمولاً همراه با عملگر استخراج استریم (stream extraction operator) استفاده می‌شود. این عملگر به شکل دو علامت بزرگتر، یعنی << نوشته می‌شود. مثال زیر نحوه بکارگیری آنها را نشان می‌دهد.

#include <iostream>
 
using namespace std;
 
int main() {
   char name[50];
 
   cout << "Please enter your name: ";
   cin >> name;
   cout << "Your name is: " << name << endl;
 
}

وقتی کد بالا کامپایل و اجرا شد، از شما درخواست وارد کردن یک نام می‌کند. یک مقدار وارد کرده و کلید enter را برای مشاهده نتیجه فشار دهید.

Please enter your name: cplusplus
Your name is: cplusplus

کامپایلر ++C همچنین نوع داده مقدار ورودی را مشخص کرده و عملگر استخراج متناسب با آن را انتخاب می‌کند و با استخراج مقدار ورودی، آن را در متغیر داده شده ذخیره می‌کند.

همانند مثال بالا، عملگر استریم استخراج << را می‌توان چندین بار در یک دستور استفاده کرد. برای دریافت بیشتر از یک داده از ورودی،باید به شکل زیر عمل کنید.

cin >> name >> age;

دستور بالا معادل دو دستور زیر است.

cin >> name;
cin >> age;

استریم استاندارد خطا (cerr)

شی cerr نمونه ای از کلاس ostream می‌باشد. گفته می‌شود که شی cerr به دستگاه استاندارد خطا متصل است، که معمولاً همان صفحه نمایش می‌باشد. شی cerr بافرنشده است و هر استریم درج شده در cerr فوراً در خروجی نمایش داده می‌شود.

مطلب پیشنهادی:  محصورسازی داده (Data Encapsulation) در ++C

Cerr نیز با عملگر درج استریم به کار می‌رود که نمونه‌ای از آن را در مثال زیر مشاهده می‌کنید.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   cerr << "Error message : " << str << endl;
}

با اجرای کد فوق، خروجی زیر را ملاحظه خواهید کرد.

Error message : Unable to read....

استریم استاندارد ثبت (clog)

شی clog نمونه ای از کلاس ostream می‌باشد. گفته می‌شود که شی clog به دستگاه خطای استاندارد متصل است، که معمولاً صفحه نمایش است، اما clog بافرشده است. یعنی هرچیزی که در clog درج می‌شود باید تا زمان پرشدن بافر و یا تا زمان خالی شدن آن، در بافر بماند.

Clog همراه با عملگر درج استریم به کار می‌رود. مثال زیر نحوه کاربرد آن را نشان می‌دهد.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   clog << "Error message : " << str << endl;
}

با اجرای کد فوق، خروجی زیر تولید می‌شود.

Error message : Unable to read....

با ذکر این چند مثال، نمی‌توان تفاوت بین cout، cerr و clog را به خوبی درک کرد، اما با نوشتن و اجرای کدهای بزرگ تفاوت‌ها آشکار می‌گردد. بنابراین به عنوان یک تمرین سعی کنید که پیام‌های خطا را با استریم cerr نشان داده و دیگر پیام‌های ثبت وقایع (log) با با clog نمایش دهید.

مطلب پیشنهادی:  تابع سازنده کپی در ++C

منبع: ترجمه از سایت tutorialspoint.com

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

یک دیدگاه

  1. سلام
    فکر نمی کنم کسی از این برنامه حتی اندکی یاد بگیرد
    و خروجی ندهد ممکن همین دیدگاه
    اما متاسفانه این برنامه خیلی عقب تراز ما پا به عرصه گذاشت
    به همین خاطر حوصله امسال من ازاین برنامه خارج است ولی با دیدن این برنامه ها جای شکایت دارم خدایا هیچ کس قادر به اجرای عدالت نخواهد شد حتی خود شما خدا
    و چطور انتظار اجرای عدالت از بندگان داری