迁移到VS2013比较运算符错误C2678:二进制'=='无运算符

时间:2015-01-19 13:34:45

标签: c++ visual-studio-2013 compiler-errors visual-studio-2005 comparison-operators

我的下面的代码在visual studio 2005中运行良好。但是在迁移到visual studio 2013时会出现编译错误。

// Check if the row in the file starts with a double value
bool RowReader::isDouble(std::wstring value)
{
    double testValue;
    std::wistringstream in(value);
    in.setf(std::ios::dec, std::ios::basefield);

    if((in >> testValue) == NULL)
        return false;

    return true;
}

错误是:

Error   1   error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::basic_istream<wchar_t,std::char_traits<wchar_t>>' (or there is no acceptable conversion)

有任何帮助吗?我对此很新。 1. testValue的初始值是0吗? 2.如果第一个字符不是双倍,为什么它等于NULL? 3.如何修复此编译错误?

1 个答案:

答案 0 :(得分:0)

问题解决了。见下面的代码:

bool isDouble(std::wstring value)
{
    wchar_t * endptr = 0;
    wcstod(value.c_str(), &endptr);
    if (*endptr != '\0' || endptr == value.c_str()){
        return false;
    }
    return true;
}