PDA

View Full Version : دلیل استفاده از توابع clear(), get(), getline



fshb_ 1370
سه شنبه 19 مرداد 1389, 12:31 عصر
سلام
میشه کاربرد cin.clear() رو توضیح بدید.
با وجود cin.getline چرا گاهی اوقات در بعضی برنامه ها از cin.get استفاده میکنن؟

behroz1992
سه شنبه 19 مرداد 1389, 16:57 عصر
سلام دوست عزیز
cin.get()::برای خواندن کاراکترها از ورودی علاوه بر شی cin میتوان از تابع get() که عضو شی cin است استفاده کرد این تابع به شکل زیر هست::
x=cin.get();
این تابع کاراکتری را خوانده و در متغیر x قرار میدهد

من خودم تازه کارم اون دوتا تابع رو هم ندیدم
موفق باشی

Salar Ashgi
سه شنبه 19 مرداد 1389, 20:33 عصر
cin.get بیشتر برای گرفتن یه کاراکتر استفاده میشه و cin.getline بیشتر برای گرفتن آرایه کاراکتری استفاده
میشه ، یه مثال :



#include <iostream>
#include <conio>
int main(){
char a[6];
cout<<"Enter a string with max length = 5 :\n";
cin.getline(a,6);
cout<<a<<endl;
getch();
}
===========


#include <iostream>
#include <conio>
int main(){
char ch;
cout<<"Enter a char :\n";
ch = cin.get();
cout<<ch<<endl;
getch();
}

PC2st
سه شنبه 19 مرداد 1389, 21:10 عصر
من خودم تازه کارم اون دوتا تابع رو هم ندیدمدر این مورد (مواجه شدن با توابع جدید) فرق زیادی بین تازه‌کار و باتجربه نیست. به یک مرجع رجوع کنید، مثلا:
cppreference.com
cplusplus.com
و ...


میشه کاربرد cin.clear() رو توضیح بدید.
با وجود cin.getline چرا گاهی اوقات در بعضی برنامه ها از cin.get استفاده میکنن؟ getline برای گرفتن یک خط کامل (شامل چندین کاراکتر تا انتهای خط)، اما get برای گرفتن تنها یک کاراکتر استفاده می‌شود. اگر منظور شما برای توقف برنامه است، مهم نیست که از کدامیک استفاده کنید.

از تابع clear (بدون پارامتر) برای پاک کردن flagهای موقعیت خطا استفاده می‌شود. مثلا اگر فایل به انتها رسیده است، تابع clear باعث می‌شود که این موقعیت پاک شود (انگار که فایل به انتها نرسیده است البته باید مکان اشاره‌گر را نیز به ابتدای فایل ببرید با تابعی مثل seekp). یا مثلا اگر در حین خواندن فایل، با خطا مواجه شدید، برای سعی دوباره، ابتدا باید تابع clear را صدا بزنید و دوباره سعی کنید. تابع clear دارای یک آرگومان اختیاری نیز هست که flag موقعیت خطا را می‌توان به کمک آن تعیین کرد، بطور پیش‌فرض مقدار پارامتر ورودی آن goodbit است که باعث می‌شود flagهای موقعیت خطا را پاک کند.