2016-05-31 5 views
0

Ich fange an, in gdb Python-Erweiterung zu suchen, einige Hilfe benötigt. HierWie aktualisiert man den Drucker für C++ Vektor, so dass es jedes Element drucken kann

ein Beispiel:

#include <vector> 

int main() { 
    using namespace std; 

    vector<int> v; 
    v.push_back(1); 
    v.push_back(2); 
    v.push_back(3); 

    return 0; 
} 

Hier sind die Befehle, die ich in gdb verwendet:

(gdb) set print pretty 
(gdb) n 
7   v.push_back(1); 
(gdb) 
8   v.push_back(2); 
(gdb) 
9   v.push_back(3); 
(gdb) 
11  return 0; 
(gdb) p v 
$1 = std::vector of length 3, capacity 4 = {1, 2, 3} 

Sie können die Vektor-Drucker sehen nur einige einfache Informationen ausdruckt. Ich frage mich, wie man den Vektordrucker so hackt, dass er alle Elemente ausdruckt?

Des Weiteren ist mein ultimatives Ziel, einen Vektor meines Datentyps auszudrucken. Ich weiß nicht, wie ich die einzelnen Daten noch ausdrucken soll, schaue mir das an, aber wenn du mir die Richtung zeigen könntest, wie ich den Drucker für die einzelnen Daten und den Vektor anschließe, würde ich das begrüßen.

Danke!

[UPDATE] Ich habe zu hart heute sicherlich arbeiten, werden die Werte ausgedruckt und ich habe es nicht gesehen, Seufzer. Es tut uns leid.

Mein nächster Schritt ist, einen Drucker für meinen Datentyp zu schreiben. Sobald ich diesen Drucker registriert habe, kann der Vektordrucker ihn automatisch verwenden, um die einzelnen Daten zu drucken, oder?

+0

Vielleicht vermisse ich etwas, aber es scheint, dass die "einfache Info", die Sie erwähnten, den Vektorinhalt enthält - '{1, 2, 3}'. –

+0

Es scheint, dass es die Elemente druckt? – Kundor

+0

Siehe diese Antwort: http://stackoverflow.com/a/10758845/1865694 –

Antwort

0

Mein nächster Schritt ist es, einen Drucker für meinen Datentyp zu schreiben, so dass, sobald ich habe dass Drucker registriert, Vektor-Drucker kann automatisch verwendet es, um Druck die einzelne Daten ist, das richtig?

Ja, das stimmt. Ein gut geschriebener Container-Pretty-Drucker (und die libstdC++ -Drucker sind sicherlich qualifiziert, wenn ich das selbst sagen darf) gibt ein iterierbares Objekt zurück, das gdb.Value Instanzen liefert, die die enthaltenen Daten darstellen. Dadurch kann gdb auch einen hübschen Drucker auf diese Werte anwenden.

Verwandte Themen