string- bzw. char- frage



  • Ich habe folgendes Problem: Ich möchte ein Programm schreiben, welches vom Benutzer eingegebene Worte slphabetisch sortiert. Dabei möchte ich mir den ascii-code zu nutze machen, welcher ja alphabetisch aufsteigend für jeden Buchstaben eine Nummer bereit hält. z.B. a=49. Durch Casting kann ich dann die Anfangsbuchstaben vergleichen und so die Worte sortieren. Nun mein Problem:
    Ich wollte es mit einem string-array machen. Das Problem dabei: ich weiß nicht, wie ich auf die einzelnen Elemente zugreifen kann.
    Bei char-variablen ist das Problem, dass ich dem Benutzer nicht die Eingabe beliebig vieler Worte erlauben kann, da ich jede Variable vorher deklarieren müsste, natürlich mit der dann entsprechenden Länge.
    Kurz: Wenn string text[2]="hallo", wie kann ich dann einzeln auf das h oder auf ein beliebiges anderes Element zugreifen.
    Etwas lang geworden xder Text. Freue mich über jede Antwort. Danke



  • #include <iostream>
    #include <string>
    
    int main()
    {
        std::string meine_strings[] = {"hello", "world", "!"};
    	std::cout << meine_strings[0][0] /* oder meine_strings[0].at(0) */ << std::endl;
    	return 0;
    }
    


  • Squawking schrieb:

    Kurz: Wenn string text[2]="hallo", wie kann ich dann einzeln auf das h oder auf ein beliebiges anderes Element zugreifen.

    text[2][0]== h 🙂



  • Alles beantwortet. Grossen Dank!!



  • Habe jetzt mal einen Code geschrieben. In diesem ergibt sicher allerdings ein problem. Och denke es hat was mit dem Casting zu tun. Wer will kann ja mal drauf schaun:

    #include <iostream>
    #include <string>
    
    int main()
    {
    int how_many;
    int asc1;
    int asc2;
    int counter=0;
    cout<<"Wie viele Worte wollen Sie alphabetisch sortieren? ";
    cin>>how_many;
    
    string word[how_many];
    string word_change;
    
    cout<<"Bitte geben Sie nun die Worte ein: "<<endl;
    
    while(counter<how_many)
    {
    cin>>word[counter];
    counter++;
    }
    counter=0;
    
    while(counter<how_many)              //In dieser Schleife stürzt das Programm offensichtlich ab
    {
    asc1=(int) word[counter][0];
    asc2=(int) word[counter+1][0];
    
    if(asc1>asc2)
    {
    word_change=word[counter+1];
    word[counter+1]=word[counter];
    word[counter]=word_change;
    }
    counter++;
    }
    }
    

    Grüsse



  • while(counter<how_many-1)
    

    so sollte es gehen 😉



  • GRRR...
    Aber sicher doch. Das letzte Wort würde ja sonst mit einem Wort verglichen werden, welches es gar nicht gibt...

    Nochmals herzlichen Dank. Denke ich komme jetzt klar.


Anmelden zum Antworten