یک برنامهٔ C++ بنویسید که یک رشتهٔ wide-character (wchar_t) را بهعنوان ورودی میگیرد که حاوی یک عدد اعشاری در نماد علمی است (مثلاً L(3.14e-2)) و با استفاده از توابع موجود در آن را به double تبدیل نموده و مقدار تبدیلشده و باقیماندهٔ رشته را چاپ کند.
13.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:57 0.0
برای حل این مسئله از هدر و تابع wcstod استفاده کنید: رشتهٔ ورودی را در یک wchar_t[] یا std::wstring نگهدارید، سپس wcstod با پارامتر endptr مقدار عددی را به double تبدیل میکند و نشانگر بهجایی که تبدیل متوقف شده را برمیگرداند؛ مقدار تبدیلشده و باقیماندهٔ رشته را چاپ کنید. در صورت نیاز برای پشتیبانی از کاراکترهای محلی، قبل از خواندن ورودی setlocale(LC_ALL, "") را فراخوانی کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای حل این مسئله استفاده از wcstod با رشتهٔ wide و پارامتر endptr مناسب گزینهٔ خوبی است. قبل از خواندن ورودی از setlocale(LC_ALL, "") استفاده کنید تا کاراکترهای محلی بهدرستی پشتیبانی شوند. مقدار بازگشتی را بررسی کنید و با endptr هم مقدار تبدیلشده به double و هم باقیماندهٔ رشته را چاپ کنید. همچنین به خطاهای تبدیل توجه کنید (مثلاً با بررسی errno یا پایان یافتن رشته بهدرستی) تا رفتار مطمئنتری داشته باشید.
گزارش