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 word\n";
cin.getline(text,10);
cout << text << endl;
return 0;
}
کليه ورودي هائي که با cin خوانده مي شوند نياز دارند کليد Enter يا Return زده شود. در C++ استاندارد راهي براي خواندن مستقيم کليدها از صفحه کليد وجود ندارد. اما مي توان از کتابخانه هاي ديگر استفاده کرد.