Warum kann ich nicht Index ein std :: vector in dem sofortigen Fenster?
-
24-09-2019 - |
Frage
Also, ich habe einen Vektor
std::vector<std::string> lines.
ich diesen Vektor füllen, und es wie zugreifen
std::string temp = lines[0];
Doch in dem sofortigen Fenster, beide
lines[0] - error:overloaded operator not found
und
lines.at(0) - error:symbol is ambiguous
funktioniert nicht. Gibt es einen Trick, um die Direkt-Fenster mit c ++ verwenden. Ich komme meistens aus einem C # -Hintergrund, wo alles funktioniert gut (und ich habe Intellisense in den Direkt-Fenstern). Ich habe nicht erwartet, C ++, groß zu sein, aber ich dachte, es wäre neben Ints für die Dinge funktionieren. Kann mir jemand sagen, was ich falsch mache? Danke.
EDIT: Ich soll klar sein, nichts funktioniert wirklich in dem sofortigen Fenster, das ist nur ein vereinfachtes Beispiel
EDIT: Ich bin im Debug-Modus
Lösung
Die unmittelbaren und Uhren Fenster nicht unterstützen ladenen Operatoren. Es besteht eine gewisse Unterstützung dort für den Druck Standardcontainer als Ganze in einer vernünftigen Art und Weise (siehe zB http://www.virtualdub.org/blog/pivot/entry.php?id=120 ), aber dies reicht nicht zu der Möglichkeit, operator[]
auf sich zu nutzen.
Hoffentlich wird dies in späteren Versionen des Debuggers verbessert werden, aber für jetzt, am i-ten Elemente eines Vektors, try lines._Myfirst[i]
zu suchen.
(_Myfirst
, in den Standardbibliotheken, die mit VC kommen ++, ist nun mal die Membervariable in einem std::vector
sein, dass auf das erste Element der Sequenz. Also das ist nur ein Vektor prüft, als ob es ein anderes Objekt waren. Die diese aus arbeiten, musste ich an den Header sehen ... nicht sehr bequem, aber hoffentlich wird diese Ihnen helfen. Sie wahrscheinlich etwas ähnliches mit den anderen Behältern tun, aber Sie werden in den Header aussehen müssen, um herauszufinden, wie ).
(By the way, wenn Sie in C # gearbeitet haben, die C ++ Debugger scheint wahrscheinlich durch den Vergleich ein bisschen weniger glatt im Allgemeinen, und dies ist nur ein Beispiel dafür. Ich habe den Eindruck bekommen, es viel mehr Arbeit gewesen setzen in die CLR Seite.)
Andere Tipps
In nowaday Visual Studio-Versionen (zum Beispiel 2013/2015) _Myfirst Membervariable existiert nicht mehr für einen std :: vector variabel. Verwendung _C_begin statt - Mittel für die gegebene Beispiel der Verwendung z.B. lines._C_begin [i].