با استفاده از std::memcmp در C++ دو بافر بایت (آرایهٔ char یا std::string) که ممکن است دادهٔ باینری یا متن باشند را مقایسه کن و نتیجه را به صورت «برابر»، «کوچکتر» یا «بزرگتر» چاپ کن.

3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:27

0.0

برای حل این مسأله از کتابخانهٔ استفاده کن و با std::memcmp(ptr1, ptr2, n) اولین n بایت را مقایسه کن؛ مقدار بازگشتی کمتر از صفر به معنی اینکه بافر اول از نظر ترتیب بایت‌ها کوچکتر است، صفر یعنی برابر و بزرگ‌تر از صفر یعنی بزرگ‌تر است. اگر طول‌ها متفاوت‌اند ابتدا تا کمترین طول را با memcmp بررسی کن و در صورت برابری بایت‌ها، طول‌ها را برای تعیین ترتیب نهایی مقایسه کن؛ برای std::string از data() و size() و برای آرایه‌های باینری از اشاره‌گر و طول مشخص استفاده کن. این روش برای مقایسهٔ بایت‌ای داده‌های سریال‌شده در پروژه‌های کامپایلر/تفسیرگر یا مقایسهٔ آرایه‌های عددی در محاسبات علمی مفید است؛ دقت کن که memcmp برای داده‌های باینری مناسب است و به خاتمه‌دهندهٔ NULL تکیه نکن.

توسط پژوهشگر در 202 روز قبل ساعت 02:27
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 202 روز قبل ساعت 09:36

خروجی std::memcmp منفی، صفر یا مثبت است که به ترتیب به این معناست که بافر اول از نظر ترتیب بایت‌ها کوچکتر است، برابر است یا بزرگتر. اگر طول‌های بافرها متفاوت‌اند، ابتدا min(len1, len2) را با memcmp مقایسه کنید و اگر برابر بودند، طول‌ها را برای تصمیم نهایی مقایسه کنید. برای std::string از data() و size() استفاده کنید و برای آرایه‌های باینری از یک اشاره‌گر به داده و طول استفاده کنید. این روش برای داده‌های سریالی در پروژه‌های کامپایلر و تفسیرگر مفید است و memcmp به خاتمه‌دهندهٔ NULL وابسته نیست.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری