显示wstring上的Intellisense:npos = 18446744

时间:2017-08-02 11:51:49

标签: c++

在构造函数中:

CSVBMFBlockModelReader(const wchar_t * const FileNameWithPath, char Delimiter)
{
    _FileNameWithPath = FileNameWithPath;
    _Delimiter = Delimiter;
}

智能感知然后报告 {npos = 18446744073709551615} 立即窗口报告类似的东西:

{npos = 18446744073709551615}     (错误):0     (错误):0

我做错了什么或这只是智能感知?代码按预期工作,_FileNameWithPath.data()返回正确的结果。编译器不发出任何警告。当地的私人声明是:

private:

    std::wstring _FileNameWithPath;
    char _Delimiter;

我必须说明我在从c#启动后调试代码。我正在使用VS 2015 Enterprise。

请注意我知道0XFFFFFFFFFFFFFFFF是相同的值。我感兴趣的是为什么intellisense会向我展示这个价值。

1 个答案:

答案 0 :(得分:1)

您只是看到std::string / std::wstring的一部分。 std::string::npos是一个sentinel值,用于指示成员函数何时在字符串中找不到有效位置。它被定义为

size_type npos = -1;

并且由于size_type是无符号整数类型,因此它包装为类型可容纳的最大数字。在这种情况下,您将看到64位无符号整数可以容纳的最大值。