000
04.02.2007, 17:59 Uhr
Suba Esel
|
Mir ist eben was aufgefallen, was mich etwas wundert:
Ich hab ein Programm, das nach jedem Buchstaben eines eingegebenen Textes ein Leerzeichen einfügen soll.
C++: |
#include <iostream>
int main() { std::cout << "Gib einen Text ein!" << std::endl; std::string start; std::getline(std::cin, start);
std::string ende = "";
for (unsigned int i = 0; i <= sizeof(start); ++i) { ende += start[i] + " "; }
std::cout << ende; }
|
Wenn ich das Programm so benutze, lautet die Ausgabe wie folgt: Eingabe: Ausgabe: asdf _string::copyc_string::comparering::copyng::copy asdfasdf _string::copyc_string::comparering::copyng::copy_string::copy 1234 @,↑@↑@ 12341234 @,↑@↑@@ etc.
Wenn ich dagegen statt
Code: |
ende += start[i] + " ";
|
Code: |
(ende += start[i]) + " ";
|
nehme, ist Eingabe == Ausgabe, offenbar wird durch die Klammerung das += wirkungslos.
Wenn ich
mache, funktioniert alles tadellos.
Wenn ich
Code: |
ende += start[i]; ende += " ";
|
nehme, funktioniert auch alles.
Woran liegt das?
EDIT: Statt ↑ steht da ein Pfeil nach oben, das Forum hat den "etwas" verändert. -- Simon Dieser Post wurde am 04.02.2007 um 18:03 Uhr von Suba Esel editiert. |