Anfängerfrage zu strings



  • hallo Community,
    ich hab ein Problem und weiß nicht welches. Warum bekomm ich bei diesem Programm keine Ausgabe?!?

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
    	string str_1;
    	string str_2;	
    
    	str_1 = "hallo Chef";
    
    	int i=0;
    	while (str_1[i] != 'o') {
    		str_2[i] = str_1[i];
    		i++;
    	}
    
    	cout << str_2;  //Diese Ausgabe kommt einfach nicht
    	return 0;
    }
    

    ich will den Teil eines Strings in einen neuen string kopieren. Wenn ich char-arrays nehme gehts, aber ich will strings weil mir das die weitere verarbeitung leichter macht. Was muß ich verändern?

    Danke im voraus
    Phil



  • #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
    	string str_1;
    	string str_2;	
    
    	str_1 = "hallo Chef";
    
    	int i=0;
    	while (str_1[i] != 'o') {
    		str_2 += str_1[i];
    		i++;
    	}
    
    	cout << str_2;  //Diese Ausgabe kommt einfach nicht
    	return 0;
    }
    


  • Hallo

    Du must daran denken, das du bei str_2 auf Elemente zugreifst, die gar nicht vorhanden sind. Was glaubst du wohl, wieviele Elemente (also Chars) str_2 nach der Deklaration hat?

    Und das Kopieren kannst du auch einfach so machen:

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
        string str_1;
        string str_2;   
    
        str_1 = "hallo Chef";
    
        str_2 = str_1; // Wert übergeben 
        cout << str_2;  //Diese Ausgabe kommt einfach nicht
        return 0;
    }
    

    bis bald
    akari



  • danke für die schnellen Antworten!

    die erste Antwort klappt. So kann ich zumindest schonmal meinen Teilstring in einen neuen String kopieren.

    @akari
    Du hast mich falsch verstanden. Es geht mir nicht drum einen ganzen String zu kopieren. Das bekomm ich noch hin
    Ich will nur den Teil eines Strings in einen andern kopieren. Und am liebsten würde ich auch noch fest legen ab wo die Kopie eingefügt wird. z.B. string1: hallo Chef
    Wie schaff ich es jetzt ein anderes Wort (z.B. "Meister") über das Wort Chef drüberzukopieren ohne das Wort "hallo" anzurühren?



  • schau dir mal string::replace() und Konsorten in deiner bevorzugten C++-Referenz an.
    geloescht



  • Hallo

    schau dir mal die Methoden der string-Klasse an, insbesondere find() und substr().

    bis bald
    akari



  • Wie kann man einen string komplett in großbuchstaben umwandeln?

    Also von "Hallo Welt" zu "HALLO WELT".

    Und wie komplett zu kleinbuchstaben. Gibt es da fertige Funktionen. In Delphi z.B: Uppercase(String);



  • Hallo

    Such im C++ Subforum nach toupper

    bis bald
    akari



  • toupper (und tolower zur Umwandlung in Kleinbuchstaben) arbeiten auf einem einzelnen Zeichen - aber du kannst sie gerne per for()-Schleife oder std::transform auf jedes Zeichen deines Strings loslaufen lassen.


Anmelden zum Antworten