cin
کلاس iostream امکان خواندن ورودی را هم فراهم می کنند. شئ مورد استفاده برای ورودی استاندارد cin است که ورودی را معمولا از کنسول می گيرد اما می تواند از منابع ديگر هم دريافت کند.
عملگری که همراه با cin استفاده می شود >> است که برای دريافت ورودی از نوع آرگومانش صبر می کند. مثلا اگر آرگومان صحيح باشد برای يک عدد صحيح از صفحه کليد منتظر می ماند.
مثال. برنامه زير يک عدد صحيح را دريافت کرده معادل اکتال و هگز آنرا نمايش می دهد.
#include <iostream>
int main()
{
int number;
cout << "Enter a decimal number: ";
cin >> number;
cout << "value in octal = 0" << oct << number << endl;
cout << "value in hex = 0x" << hex << number << endl;
return 0;
}
تابع cin متوجه نوع متغير می شود و داده ورودی را به نوع متناسب تبديل می کند.
مثال. برنامه زير تابع cin را برای خواندن سه عدد که با space از هم جدا می شوند استفاده می کند. بعد از وارد کردن مقادير بايد کليد enter را فشار داد.
#include <iostream>
int main()
{
int a = 0;
float b = 0.0;
int c = 0;
cout << "Please Enter an int, a float and int separated by spaces" <<endl;
cin >> a >> b >> c;
cout << "You entered " << a << " " << b << " " << c << endl;
return 0;
}
اگر 3 7.2 3 وارد شود خروجی به صورت "You entered 3 7.2 3" خواهد بود.
اگر 3.76 5 8 وارد شود خروجی به صورت " You entered 3 0.76 5" می شود. چون نقطه مميز جز عدد صحيح نيست به عنوان شروع عدد اعشاری درنظرگرفته می شود و بقيه خط ورودی از بين می رود.
اگر ورودی به طور موفق تبديل نشود شئ cin يک بيت شکست را تنظيم می کند که قسمتی از ios است و توسط تابع fail() هم در cin و هم در cout به صورت زير قابل خواندن است.
if (cin.fail() ) //do something
برای صفحه نمايش روشن است که ()cout.fail بندرت ممکن است استفاده شود اما درفايل های I/O می تواند بکار برود.
تابع ()good هم برای cin و cout وجود دارد.
cin بهترين دستور برای همه شرايط نيست اما ساده ترين را ه است. تابع get يک کاراکتر تکی صرفنظر از نوع را دريافت می کند.
تابع getline برای دريافت تعداد معينی کاراکتر است. اين تابع وقتی می خواهيد داده ای را درون آرايه ذخيره کنيد سودمند است. cin اجازه می دهد کاربر داده های بيشتری را در آرايه ذخيره کند که overloading نام دارد. توسط تابع getline تعداد بايت هايی که می خواهيد کاربر وارد کند را تعيين می کنيد. هرکاراکتر که کاربر تايپ می کند يک بايت فضا می برد. مثلا اگر برای تابع 4بايت تعريف کنيد و کاربر کلمه Computer را وارد کند تنها Comp دريافت می شود.
مثال.
#include <iostream>
int main()
{
char text[10];
cout << "Please enter a wordn";
cin.getline(text,10);
cout << text << endl;
return 0;
}
کليه ورودی هائی که با cin خوانده می شوند نياز دارند کليد Enter يا Return زده شود. در C++ استاندارد راهی برای خواندن مستقيم کليدها از صفحه کليد وجود ندارد. اما می توان از کتابخانه های ديگر استفاده کرد.