2010-02-01 27 views
13

所以,我有一个载体为什么我不能在即时窗口中编制一个std :: vector?

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++的出色,但我认为它可以用于除了整数之外的事情。谁能告诉我我做错了什么?谢谢。

编辑:我应该清楚,没有什么工作在即时窗口,这只是一个简单的例子

编辑:我在调试模式下

回答

14

眼前,看着窗户不支持重载操作员。在那里以一种明智的方式整体地印刷标准容器(参见例如http://www.virtualdub.org/blog/pivot/entry.php?id=120),但是这不能延伸到能够使用operator[]

希望在调试器的后续修订版本中可以改进这个功能,但是现在,查看矢量的第i个元素,请尝试lines._Myfirst[i]。在标准库中,VC++正好是指向序列第一个元素的std::vector中的成员变量,所以这只是检查一个向量,就好像它是任何其他对象一样。为了解决这个问题,我不得不看看头文件...不是很方便,但希望这可以帮助你。你可以做类似于其他容器的东西,但是你必须看看头文件才能解决如果你一直在C#中工作,C++调试器可能看起来相比之下总体来说不那么光滑,这只是其中一个例子,我得到的印象是在CLR方面投入了更多的工作。)

+0

好的,谢谢你的帮助,为什么.at()会失败? – Steve 2010-02-01 20:34:02

+0

在手表和即时窗口中调用成员函数似乎也不起作用。 (我已经更新了我的答案,提到缺乏光滑 - 这是第二个示例!)通常您可以调用独立函数。令人讨厌的是,但你可以习惯它 - 并不是说​​你有任何选择当然:)(希望以后的修订将改进本地调试方面;它已经完全可用,但缺乏CLR方面的光泽。) – 2010-02-01 20:36:38

+0

.at()可能因相同原因失败:它已超载。 – MSalters 2010-02-02 12:14:40

-1

在现今的Visual Studio版本中(例如, 2013/2015)_Myfirst成员变量对于std :: vector变量不再存在。使用_C_begin代替 - 给定示例的方法使用例如lines._C_begin [i]中。

+1

可以请你详细说明你的答案,或者用一个例子使它更加完整吗?这可以帮助提问者更清楚地了解你的意思。 – itsols 2015-12-16 13:13:45

相关问题