嗨,我有用VS2010编写的这段代码:
unsigned long CHwFingerprint::toHash(wstring& wmisignature)
{
if (wmisignature.empty())
wmisignature = _empty;
hash<wstring> str_hash;
unsigned long hash = (unsigned long)str_hash(wmisignature);
return hash;
}
* wstring只是我们创建的Unicode字符串,可以用作CString ...
现在,当我在VS 2015中使用此代码时,我得到不同的结果。
例如,如果wmisignature=HMT351U6CFR8C-PB
然后结果如下:
有什么想法吗?
答案 0 :(得分:5)
实际的散列函数取决于实现,因此可能与编译器有所不同...
并且从C ++ 14开始:
仅要求散列函数在程序的一次执行中为相同的输入产生相同的结果;这允许使用盐腌的哈希来防止冲突拒绝服务攻击。
答案 1 :(得分:0)
右键单击项目,然后选择属性。 在配置->常规->平台工具集下,更改为v100。