【问题标题】:Intellisense on wstring displays: npos = 18446744 [duplicate]wstring 显示上的智能感知:npos = 18446744 [重复]
【发布时间】:2017-08-02 11:51:48
【问题描述】:

在构造函数中:

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

Intellisense 然后报告 {npos=18446744073709551615 } 并且即时窗口报告了类似的内容:

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

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

private:

    std::wstring _FileNameWithPath;
    char _Delimiter;

我必须声明我在从 c# 启动代码后正在调试代码。我正在使用 VS 2015 企业版。

请注意,我知道 0XFFFFFFFFFFFFFFFF 是相同的值。我的兴趣是为什么智能感知向我显示这个值。

【问题讨论】:

  • 你是如何从 C# 启动它的?
  • 什么是npos
  • @Tanveer Badar [DllImport(DLLName, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, EntryPoint = "ReadVulcanCSVFileHeader")] public static extern void ReadVulcanCSVFileHeader([In] string FileNameWithPath, ref uint FieldCount , 反馈反馈, ref int ErrorCode);
  • 18446744073709551615 是 0xFFFFFFFFFFFFFFFF,它被 -1 解释为无符号整数。这听起来像是类型不匹配或未初始化的值。但是,您显示的代码似乎与您报告的错误无关,所以这个问题并不完全可以回答。
  • @JonathonReinhart 我希望有人能够确认他们也有同样的经历并得出结论这不是问题。

标签: c++


【解决方案1】:

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

size_type npos = -1;

由于size_type 是一个无符号整数类型,它环绕为该类型可以容纳的最大数字。在这种情况下,您会看到 64 位无符号整数可以容纳的最大值。

【讨论】:

  • 谢谢,但这是担心的理由吗?
  • @Peter 不应该。只是智能感知毫无意义。
猜你喜欢
  • 1970-01-01
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多