Schleifen und Text
In der Lektion über Vektoren hast du gesehen, dass ein std::string eine Folge von Zeichen vom Typ char ist: wort[0] ist das erste Zeichen und wort.size() die Anzahl der Zeichen. Deshalb kannst du Text mit denselben Schleifen durchgehen wie einen Vektor. Mit einem Index:
std::string wort = "Hallo";
for (int i = 0; i < wort.size(); i++) {
std::cout << wort[i] << std::endl;
}Oder mit der bereichsbasierten for-Schleife, in der die Variable den Typ char hat:
std::string wort = "Hallo";
for (char zeichen : wort) {
std::cout << zeichen << std::endl;
}Beide Schleifen geben aus:
H
a
l
l
oEin Leerzeichen ist auch ein Zeichen, bei "Hallo du" würde die Schleife also 8-mal laufen. Und Groß- und Kleinbuchstaben sind verschiedene Zeichen: 'H' == 'h' ist falsch.
Um ein Zeichen zu vergleichen, schreibe es in einfache Anführungszeichen: zeichen == 'l'. Mit doppelten Anführungszeichen, zeichen == "l", würdest du ein Zeichen mit einem Text vergleichen, und Clang meldet error: comparison between pointer and integer ('char' and 'const char *').
In einer Zeile ausgeben. Bisher gaben die Schleifen jeden Wert wegen std::endl in einer eigenen Zeile aus. Ohne std::endl geht die nächste Ausgabe in derselben Zeile weiter. Diese Schleife gibt nach jedem Zeichen ein Leerzeichen aus, und die Zeile endet nur einmal, nach der Schleife:
std::string wort = "Hallo";
for (char zeichen : wort) {
std::cout << zeichen << " ";
}
std::cout << std::endl;H a l l o Die Schleife mit Index kann auch rückwärts laufen: Beginne beim letzten Index, wort.size() - 1, und zähle mit i-- bis 0 herunter. Das probierst du in der Übung aus.
So schreibst du es:
Anweisungen
- 1
Gehe
textmit einer bereichsbasiertenfor-Schleife durch und gib jedes Zeichen in einer eigenen Zeile aus. - 2
Gib darunter den Text rückwärts in einer Zeile aus. Gehe ihn mit einer Schleife mit Index durch, die beim letzten Index,
text.size() - 1, beginnt und bis0herunterzählt. Gib in der Schleifetext[i]ohnestd::endlaus und beende die Zeile mitstd::endlnach der Schleife. Die Ausgabe istlager.