C++ 换算2010年与2015年之间的差异

C++ 换算2010年与2015年之间的差异,c++,visual-studio-2010,visual-studio-2015,type-conversion,C++,Visual Studio 2010,Visual Studio 2015,Type Conversion,您好,我有一段用VS2010编写的代码: unsigned long CHwFingerprint::toHash(wstring& wmisignature) { if (wmisignature.empty()) wmisignature = _empty; hash<wstring> str_hash; unsigned long hash = (unsigned long)str_hash(wmisignature);

您好,我有一段用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 结果如下:

VS 2010:hash=229184272 VS 2015:hash=4005003184
知道为什么吗?

实际的哈希函数依赖于实现,因此可能与编译器不同

从C++14开始:


散列函数只需要在程序的一次执行中为相同的输入生成相同的结果;这允许使用盐哈希来防止冲突拒绝服务攻击。

实际的哈希函数依赖于实现,因此可能与编译器不同

从C++14开始:


散列函数只需要在程序的一次执行中为相同的输入生成相同的结果;这允许使用盐哈希来防止冲突拒绝服务攻击。

右键单击项目并选择属性。
在配置->常规->平台工具集下,更改为v100。

右键单击项目并选择属性。 在配置->常规->平台工具集下,更改为v100