c++ 获取字符串hash
时间: 2023-10-18 16:44:38 浏览: 71
你可以使用标准库中的哈希函数来获取字符串的哈希值。以下是一个示例代码:
```c++
#include <iostream>
#include <functional>
#include <string>
int main() {
std::string str = "Hello, World!";
std::hash<std::string> hasher;
size_t hashValue = hasher(str);
std::cout << "Hash value: " << hashValue << std::endl;
return 0;
}
```
在上面的示例中,我们使用了`std::hash`模板类和`std::string`作为模板参数来创建一个哈希函数对象`hasher`。然后,我们将字符串`"Hello, World!"`传递给哈希函数,获取其哈希值并存储在`hashValue`变量中。最后,我们将哈希值打印到控制台上。
请注意,哈希函数的返回类型是`size_t`,它表示无符号整数。哈希函数的实现可能因编译器和平台而异,所以相同的字符串在不同的环境下可能会产生不同的哈希值。
相关问题
switch case判断字符串
在C++中,switch case语句只能用于判断整数类型,不能直接用于字符串的判断。不过可以通过字符串的哈希值来实现类似于字符串的switch case判断。具体实现可以使用 std::hash 函数来获取字符串的哈希值,然后再根据哈希值进行判断,实现代码如下:
```c++
#include <iostream>
#include <functional>
int main() {
std::string str = "hello";
std::size_t hash = std::hash<std::string>{}(str);
switch (hash) {
case std::hash<std::string>{}("hello"):
std::cout << "Hello World!" << std::endl;
break;
case std::hash<std::string>{}("world"):
std::cout << "Hello World!" << std::endl;
break;
default:
std::cout << "Unknown string." << std::endl;
break;
}
return 0;
}
```
值得注意的是,由于哈希值可能会发生冲突,因此在实际使用过程中需要进行严格的测试和验证,确保程序的正确性。
c++ openssl
在C++中,可以使用OpenSSL库进行加密、解密、哈希和SSL/TLS等操作。以下是一个简单的示例代码,展示了如何使用OpenSSL库进行SHA-256哈希计算:
```cpp
#include <iostream>
#include <openssl/sha.h>
#include <iomanip>
std::string sha256(const std::string& input) {
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, input.c_str(), input.length());
SHA256_Final(hash, &sha256);
std::stringstream ss;
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i];
}
return ss.str();
}
int main() {
std::string input = "Hello, World!";
std::string hash = sha256(input);
std::cout << "Input: " << input << std::endl;
std::cout << "SHA-256 Hash: " << hash << std::endl;
return 0;
}
```
在上述示例中,我们使用了OpenSSL的SHA-256哈希函数来计算输入字符串的哈希值。首先,我们定义了一个名为sha256的函数,它接受一个输入字符串,使用SHA256_Init函数初始化SHA-256上下文,然后使用SHA256_Update函数更新上下文,并使用SHA256_Final函数获取最终的哈希值。最后,我们将哈希值转换为十六进制字符串,并返回结果。
请确保你已经安装了OpenSSL库,并在编译时链接到相应的库文件。编译命令可能类似于:
```
g++ yourfile.cpp -lcrypto
```
请注意,只是一个基本的示例,实际应用中可能需要更多的错误处理和输入验证。同时,OpenSSL库还提供了许多其他的加密和安全功能,例如对称加密、非对称加密、数字签名等。你可以根据自己的需求选择适合的功能和函数来使用OpenSSL库。