为什么我不能在即时窗口中索引std :: vector?

Ste*_*eve 13 c++ immediate-window stdvector visual-studio

所以,我有一个向量

 std::vector<std::string> lines. 
Run Code Online (Sandbox Code Playgroud)

我填写这个向量,可以像访问它一样

 std::string temp = lines[0];
Run Code Online (Sandbox Code Playgroud)

但是,在即时窗口中,两者都有

 lines[0] - error:overloaded operator not found
Run Code Online (Sandbox Code Playgroud)

 lines.at(0) - error:symbol is ambiguous
Run Code Online (Sandbox Code Playgroud)

根本不工作.使用c ++的即时窗口有一个技巧.我主要是来自C#背景,一切都很好(我在立即窗口中有智能感知).我并不认为C++会很棒,但我认为它可以用于除了int之外的东西.谁能告诉我我做错了什么?谢谢.

编辑:我应该清楚,在即时窗口中没有任何实际工作,这只是一个简化的例子

编辑:我在调试模式

小智 15

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

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

(_Myfirst在VC++附带的标准库中,碰巧是std::vector指向序列的第一个元素的成员变量.所以这只是检查一个向量,好像它是任何其他对象.为了解决这个问题,我不得不看看标题...不是很方便,但希望这会对你有所帮助.你可以用其他容器做类似的事情,但是你必须查看标题以找出方法.)

(顺便说一下,如果你一直在使用C#,那么C++调试器通常可能看起来不那么光滑,这只是其中的一个例子.我得到的印象是,有更多的工作投入到CLR方面.)