문제

웹에서 다운로드 한 이미지의 캐시 썸네일 버전을 원하는 간단한 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] = '_';
    }
}

다른 팁

비슷한 상황에서 나는 16 진수에서 키의 바이트를 인코딩했습니다 (귀하의 경우 키는 URL의 해시입니다). 이것은 크기를 두 배로 늘리지 만 간단합니다. 파일 시스템이 캐릭터를 망칠 수있는 문제를 피하고 원래 키와 동일한 순서로 정렬합니다.

(원래 나는 약간 더 풍성하고 효율적인 인코딩을 시도했는데, 나는 문제가있는 캐릭터를 벗어난 것으로 생각했지만 OS X의 파일 시스템은 내가 가정했던 것보다 더 까다로운 것으로 판명되었습니다.)

는 어때 boost::hash?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top