2010-02-01 43 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

相關問題