所以,我有一个向量

 std::vector<std::string> lines. 

我填充这个向量,并且可以像这样访问它

 std::string temp = lines[0];

然而,在立即窗口中,两者

 lines[0] - error:overloaded operator not found

 lines.at(0) - error:symbol is ambiguous

根本不起作用。在 c++ 中使用立即窗口是否有技巧?我主要来自 C# 背景,一切都运行良好(并且我在立即窗口中有智能感知)。我没想到 C++ 会很棒,但我认为它也适用于除整数之外的其他事物。谁能告诉我我做错了什么?谢谢。

编辑:我应该清楚,在立即窗口中没有任何东西真正起作用,这只是一个简化的示例

编辑:我处于调试模式

有帮助吗?

解决方案

立即窗口和监视窗口不支持重载运算符。那里有一些支持以合理的方式打印整个标准容器(参见,例如, http://www.virtualdub.org/blog/pivot/entry.php?id=120),但这并不意味着能够使用 operator[] 在他们。

希望这会在调试器的后续版本中得到改进,但现在,要查看向量的第 i 个元素,请尝试 lines._Myfirst[i].

(_Myfirst, ,在VC++自带的标准库中,恰好是a中的成员变量 std::vector 指向序列的第一个元素。所以这只是检查一个向量,就好像它是任何其他对象一样。为了解决这个问题,我必须查看标题......不是很方便,但希望这对您有帮助。您可能可以对其他容器执行类似的操作,但您必须查看标头才能弄清楚如何操作。)

(顺便说一句,如果您一直使用 C# 工作,那么相比之下,C++ 调试器总体上可能显得不太流畅,这只是其中一个示例。我的印象是 CLR 方面投入了更多的工作。)

其他提示

在nowaday的Visual Studio版本(例如2015分之2013)_Myfirst成员变量并不再对一个std ::矢量变量存在。使用_C_begin代替 - 装置,用于给定的例子使用例如lines._C_begin [i]中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top