转换VS 2010与2015之间的差异

时间:2019-01-01 09:06:24

标签: 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);
    return hash;
}

* wstring只是我们创建的Unicode字符串,可以用作CString ...

现在,当我在VS 2015中使用此代码时,我得到不同的结果。 例如,如果wmisignature=HMT351U6CFR8C-PB 然后结果如下:

  • VS 2010:hash = 229184272
  • VS 2015:哈希= 4005003184

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

实际的散列函数取决于实现,因此可能与编译器有所不同...

并且从C ++ 14开始:

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

答案 1 :(得分:0)

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