سلام
میشه کاربرد cin.clear() رو توضیح بدید.
با وجود cin.getline چرا گاهی اوقات در بعضی برنامه ها از cin.get استفاده میکنن؟
سلام
میشه کاربرد cin.clear() رو توضیح بدید.
با وجود cin.getline چرا گاهی اوقات در بعضی برنامه ها از cin.get استفاده میکنن؟
سلام دوست عزیز
cin.get()::برای خواندن کاراکترها از ورودی علاوه بر شی cin میتوان از تابع get() که عضو شی cin است استفاده کرد این تابع به شکل زیر هست::
x=cin.get();
این تابع کاراکتری را خوانده و در متغیر x قرار میدهد
من خودم تازه کارم اون دوتا تابع رو هم ندیدم
موفق باشی
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();
}
در این مورد (مواجه شدن با توابع جدید) فرق زیادی بین تازهکار و باتجربه نیست. به یک مرجع رجوع کنید، مثلا:من خودم تازه کارم اون دوتا تابع رو هم ندیدم
cppreference.com
cplusplus.com
و ...
getline برای گرفتن یک خط کامل (شامل چندین کاراکتر تا انتهای خط)، اما get برای گرفتن تنها یک کاراکتر استفاده میشود. اگر منظور شما برای توقف برنامه است، مهم نیست که از کدامیک استفاده کنید.میشه کاربرد cin.clear() رو توضیح بدید.
با وجود cin.getline چرا گاهی اوقات در بعضی برنامه ها از cin.get استفاده میکنن؟
از تابع clear (بدون پارامتر) برای پاک کردن flagهای موقعیت خطا استفاده میشود. مثلا اگر فایل به انتها رسیده است، تابع clear باعث میشود که این موقعیت پاک شود (انگار که فایل به انتها نرسیده است البته باید مکان اشارهگر را نیز به ابتدای فایل ببرید با تابعی مثل seekp). یا مثلا اگر در حین خواندن فایل، با خطا مواجه شدید، برای سعی دوباره، ابتدا باید تابع clear را صدا بزنید و دوباره سعی کنید. تابع clear دارای یک آرگومان اختیاری نیز هست که flag موقعیت خطا را میتوان به کمک آن تعیین کرد، بطور پیشفرض مقدار پارامتر ورودی آن goodbit است که باعث میشود flagهای موقعیت خطا را پاک کند.