Also muß ich eine Methode, um die zwei ASCII-Bilder nimmt, die ich erstellt und druckt sie nebeneinander, so dass der Methodenaufruf:C++: Wie drucke ich zwei ASCII-Bilder nebeneinander?
concatHz(Picture l, Picture r);
Wo Bild ist ein Objekt, das ASCII-Bild als String speichert in den Feldern l.result und r.result.
Wenn r war
+------+
|This |
|is the|
|String|
+------+
und l war:
This
is the
String
dann wäre das Ergebnis:
This +------+
is the|This |
String|is the|
|String|
+------+
Ich habe gedacht Möglichkeiten dies zu tun, aber sie scheinen zu kompliziert und es könnte einen einfacheren Weg geben. Ich dachte daran, for loops zu benutzen, um durch jede Zeichenkette zu gehen und die erste und dann die zweite Zeichenkette zu drucken, aber dann kommt das Problem eines Indexierungsfehlers wie im obigen Beispiel auf. Gibt es eine einfache Möglichkeit, dies zu tun, an die ich nicht denke? Hier
ist die Methode, die die zugrunde liegende ASCII Bild erzeugt:
Picture Picture::create(std::vector<std::string> v){
Picture c; //default constructor called without parenthesis
c.picList=v;
c.result="";
int max1=0;
for(int i=0;i<v.size();i++){
if(v.at(i).length()>max1){
max1=v.at(i).length();
}
c.rows++;
c.result+=v.at(i)+"\n";
}
c.maxLen=max1;
return c;
}
Was Sie denken an ist so einfach, wie es sein könnte. Sie müssen nur Dinge richtig "indexieren" und eine Reihe von Leerzeichen anstelle der nicht vorhandenen Zeile für das erste Bild für die letzte Zeile drucken. Das ist keine Raketenwissenschaft. Nur eine einfache Größe in der Logik. –
Es hängt davon ab, wie die 'Bild'-Datenstruktur aussieht. –
Die Hauptsache ist, dass es eine Zeichenkette namens result als Repräsentation dieser Ascii mit \ n für die neuen Zeilen speichert. –