Strings addieren...
-
str[0] ist ein char. Wenn du chars addierst, addierst du ihre Zahlenwerte. Du solltest str.substr(0, 1) verwenden.
-
Mmh..stimmt irgendwie. Hab' ich denn alles vergessen! Und wie kann ich dann die Zeichen aneinanderhängen, wenn es so nicht geht?
Das funktioniert dann ja auch nicht:
void ways(string str) { int len = str.length(); for(int i = 1; i < len; i++) { string tmp = str[0] + str[i]; //Fehler!
Vielen Dank
lg, freakC++
-
Oh, da war ich wohl ein paar Sekunden zu langsam. Nochmal: str.substr(0,1) + str.substr(i,1).
-
Wie vorgeschlagen mit substr oder string(1, str[0]) + string(1, str[i]);
-
#include <iostream> #include <string> int main() { std::string str = "ABCD"; int i = 2; std::string tmp; // Falsch: //tmp = str[0] + str[i]; // Richtig: tmp += str[0]; tmp += str[i]; std::cout << tmp << std::endl; return 0; }
-
Danke für die Antworten!
Warum ist das mit "tmp" dann falsch? Warum muss tmp erst wieder den Wert von sich selber zugewiesen bekommen?
edit: Vielleicht habe ich es einfach vergessen oder mir fällt es gerade nicht ein ein, aber was macht diese Funktion: string(1, str[0])
Konvertiert die das? Ich kann mich daran nicht erinnern. Was soll die 1?
lg, freakC++
-
freakC++ schrieb:
Warum ist das mit "tmp" dann falsch? Warum muss tmp erst wieder den Wert von sich selber zugewiesen bekommen?
Du brauchst eine Addition von String ( = Konkatenation) statt einer Addition von chars ( = fasse char als Ganzzahltyp auf und addiere). char + char ist eine char-Addition, string + string eine Konkatenation und string + char auch eine Konkatenation.
-
// Alternativ: tmp = std::string(1, str[0]) + std::string(1, str[i]); // Die 1 als erster Parameter ist wichtig!
Ich finde das aber sehr unschön. Mit dem Operator += geht das um einiges besser.
Weil es die Zahlen als int interpretiert und die beiden Zahlen addiert.
ASCII für A (str[0]) ist = 65
ASCII für C (str[2]) ist = 6765 + 67 = 132
Und diese 132 als char interpretiert ergibt auf meinem Computer ein ä.
-
freakC++ schrieb:
edit: Vielleicht habe ich es einfach vergessen oder mir fällt es gerade nicht ein ein, aber was macht diese Funktion: string(1, str[0])
Konvertiert die das? Ich kann mich daran nicht erinnern. Was soll die 1?
-
Danke
lg, freakC++