سؤال

وأنا أكتب فئة بسيطة C ++ التي أود مصغرات الصورة مخبأ الإصدارات من الصور التي تم تحميلها من شبكة الإنترنت. على هذا النحو، وأود أن استخدام دالة البعثرة التي تأخذ في سلاسل URL وإخراج سلسلة فريدة مناسبة باعتبارها اسم الملف.

هل هناك طريقة بسيطة للقيام بذلك دون الحاجة إلى إعادة كتابة وظيفة نفسي؟ لقد بحثت في جميع أنحاء لمكتبة بسيطة، ولكن لا يمكن العثور على أي شيء. بالتأكيد هذا هو مشكلة مشتركة.

هل كانت مفيدة؟

المحلول

واتباع نهج أكثر بساطة هو استبدال كل ما هو ليس حرف أو رقم مع تسطير.

وتحرير: وهنا لتنفيذ السذاجة في C:

#include <cctype>

char *safe_url(const char *str) {
    char *safe = strdup(str);
    for (int i = 0; i < strlen(str); i++) {
        if (isalpha(str[i]))
            safe[i] = str[i];
        else
            safe[i] = '_';
    }
}

نصائح أخرى

في وضع مماثل I المشفرة بايت المفتاح في عرافة (حيث، في قضيتك، والمفتاح هو تجزئة URL). هذا يضاعف من حجم ولكن بسيطة، ويتجنب أي مشاكل محتملة مع الملفات الخاصة بك تغيير اسم الشخصيات، وأنواع في نفس الترتيب كما المفتاح الأصلي.

و(الأصلية حاولت مربي الحيوانات قليلا، الترميز أكثر كفاءة، التي أرى أنها هربت أية أحرف إشكالية، ولكن نظام الملفات OS X وتبين أن يكون جنونا من توليت).

وماذا عن boost::hash ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top