해시를 만들려면, 당신은 기본적으로 유일한 정수 문자열의 각 문자의 값이 아닌 ASCII 값이 필요합니다. 그들은 아주 다른 두 가지입니다. ASCII는 인코딩입니다. 문자열도 UTF-8로 인코딩 될 수 있습니다. 문자열은 단일 NULL로 끝나지 만 각 문자는 1 바이트 이상을 차지할 수 있습니다. 어쨌든, perreal의 솔루션이 당신이 원하는 것입니다. 그러나 char과는 인코딩 유형과 저장 유형 간의 차이점을 이해해야하므로 별도의 대답으로 작성했습니다.
C + 11에서는 표준 라이브러리에 내장 된 해시 함수가 있음을 언급 할 가치가 있습니다. 이것이 당신이 그것을 사용하는 방법입니다.
#include <string>
#include <iostream>
#include <functional>
int main() {
const std::string str = "abcde";
std::cout << std::hash<std::string>()(str) << std::endl;
return 0;
}
마지막으로, 당신은 여전히 표준 : 축적하여, C++ (11)가없는 문자열의 요소를 요약 할 수 있습니다
#include <string>
#include <iostream>
#include <numeric>
int main() {
//0x61+0x62+0x63+0x64+0x65=0x1ef=495
const std::string str = "abcde";
std::cout << std::accumulate(str.begin(),str.end(),0) << std::endl;
return 0;
}
은 물론 EBCDIC의 아니라면) (그러나 당신은 합계 것 EBCDIC 값 - 코드는 여전히 실행되지만 다른 결과를 제공합니다.) – MSalters