عناوين ترميز إلى سلسلة اسم آمنة
سؤال
وأنا أكتب فئة بسيطة 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
؟