سلام دوستان
میخواستم بدونم بهترین راه برای چک کردن نوع داده تو c++ چی هست؟!!
مثلا برای متغییری که از نوع رشته تعریف کردیم، اگر کاربر مقداری که وارد میکنه از نوع رشته نباشه یه پیغام نمایش بده !!
Printable View
سلام دوستان
میخواستم بدونم بهترین راه برای چک کردن نوع داده تو c++ چی هست؟!!
مثلا برای متغییری که از نوع رشته تعریف کردیم، اگر کاربر مقداری که وارد میکنه از نوع رشته نباشه یه پیغام نمایش بده !!
سلامنقل قول:
برای مشخص کردن نوع داده که میتوانید از دستور typeid استفاده کنید
نمیشه گفت بهترین راه همیشه از یک طریق بدست می اید بهترین راه رو شما باید با توجه نوع مسئله و تکنیک های مورد استفاده در برنامه خود بدست اورید
برای بدست اوردن اطلاعات بیشتر در مورد typeid به [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] و [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مراجعه کنید
دوست عزیز typeip نوع متغییری که تعریف شده رو مشخص میکنه !نقل قول:
من میخوام ماهیت چیزی که کاربر وارد میکنه رو بررسی کنم که اگر مثلا به جای عدد کاراکتر وارد کرده بود یه پیغام نمایش بده!
بله درسته typeip نوع رو مشخص میکنهنقل قول:
ابتدا اینکه تمام داده هایی که وارد سیستم میشوند به صورت رشته هستند این شمااید که باید داده رو به نوع مورد نظر تبدیل کنید یا زبان برنامه نویسی این قابلیت رو داشته باشد که داده رو تشخیص دهد
کاری که شما میخواهید انجام دهید اعتبار سنجی نام دارد
برای اعتبار سنجی باید داده رو دریافت و کاراکتر به کاراکتر اون رو چک کرد این عملیات باید قبل از وارد شدن داده به قسمت عملیاتی یا محاسباتی باشد
به عنوان مثال [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] رو مشاهده کنید که از تابع isdigit جهت تشخیص اینکه کاراکتر مورد نظر عدد است یا خیر
شما برای کار خود باید تابعی درست کنید که کار اعتبار سنجی رو انجام دهد
اگر قسمتی از توضیحات گنگ است بفرمائید توضیح خواهم داد
این کار رو انجام دادم قبلا منتها یه مشکلی که دارم اینهنقل قول:
مثلا تابع isdigit که برای تشخیص اعداد 0 تا 9 هست ، وقتی که یه متغییری از نوع int تعریف میکنم و از کاربر مقدار رو میگیرم با اینکه عدد وارد میکنم ولی باز هم تابع مقدار 0 رو بر میگردونه!!
حالا اگر همون متغییر رو از نوع char تعریف کنم و مقدار رو بگیرم تابع به درستی عمل میکنه!
میخواستم بدونم نمیشه کاری کرد که نوع متغییر عددی باشه اما این تابع مقدار درست رو برگردونه؟!
الان کامپایلر ندارم امتحان کنم اما همانطور که عرض کردم مقادیر دریافتی همه رشته هستند شما باید مقادیر رو قبل از ارسال به تابع تبدیل کنیدنقل قول:
مثلا کاربر عدد 123 وارد میکند اما در واقع کامپیوتر ان را رشته 123 در نظر میگیرد
شما منظورتون اینه که وقتی یه متغیر نوعش int هست من دوباره باید تبدیلش کنم بعد ارسال کنم به تابع؟!نقل قول:
اگر اینطوره به چی باید تبدیل بشه؟ کاراکتر؟!
بله به کاراکتر تبدیل کنید چون نوع ورودی تابع isdigit کاراکتر استنقل قول:
مگر اینکه شما خودتان تابعی تعریف کنید که کار اعتبارسنجی رو با ورودی int انجام دهد
این کار بیشتر به خودتون بستگی داره که بخواهید چطور با داده برخورد کنید