std::string, warum funktioniert diese Zuweisung nicht?
-
Hallo!
Ich wollte einfach mal wissen, warum folgender Code funktioniert#include <iostream> #include <string> int main() { std::string str1; std::string str2; std::cout << std::endl << "Bitte ein Wort eingeben: "; std::cin >> str1; for(int j = str1.length() - 1; j >= 0; --j) str2 += str1[j]; std::cout << "\nWort ist "; if(str1 == str2) std::cout << "ein Palindrom\n\n"; else std::cout << "kein Palindrom\n\n"; return 0; }
der folgende aber nicht:
#include <iostream> #include <string> int main() { std::string str1; std::string str2; std::cout << std::endl << "Bitte ein Wort eingeben: "; std::cin >> str1; unsigned int j = str1.length() - 1; for(unsigned int i = 0; i < str1.length(); ++i, --j) str2[i] = str1[j]; // Warum funktioniert diese Zuweisung nicht? std::cout << "\nWort ist "; if(str1 == str2) std::cout << "ein Palindrom\n\n"; else std::cout << "kein Palindrom\n\n"; return 0; }
Das müsste doch das gleiche bewirken, oder??
Vielen dank im voraus
GAST
-
Weil str2 zu allen Zeiten die Laenge 0 hat, und sich bei str2[i] = ... nicht selbststaendig vergroessert, sondern wahrscheinlich undefiniertes Verhalten hat.
-
Gunnar har recht, gemäss Standard ergibt der Zugriff mittels []-Operator auf einen
nicht existierenden Index undefiniertes Verhalten.mfg JJ
-
Danke euch beiden!
Und wieder was dazugelernt_GAST_