[C/C++] C++ ToUpper

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Flu, 12. Oktober 2008 .

  1. 12. Oktober 2008
    C++ ToUpper

    wie kann ich eine eingabe die ich von hand erledigt hab in großbuchstaben umwandeln.

    Hier mein code:
    Code:
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <stdlib.h>
    #include <ctype.h> 
    #include <stdio.h>
    #include<conio.h>
    
    using namespace std;
    
    int Spiel_Beginnen()
    {
     char Eingabe;
     string Eingabe1;
     
     
     cin >> Eingabe;
     Eingabe = toupper();
     cout << Eingabe << endl;
     
     cin.get();
     return 0;
    }
    ich möchte, dass wenn ich z.b. HaLLo eingebe, dass dann bei der ausgabe HALLO steht.

    hoffe ihr versteht mein prob und könnt mir mit einem kurzen beispiel helfen.
     
  2. 12. Oktober 2008
    AW: C++ ToUpper

    das klappt irgendwie nicht.

    wenn ich jetzt meine Eingabe in großbuchstaben ausgeben lassen möchte müsste das doch so gehn:
    Code:
    char Eingabe;
     char WURF;
     char LIST;
     
     
     cout << "Wollen Sie anfangen? Zum Wuerfeln bitte 'Wurf' eingeben!" << "\n\n";
     cin >> Eingabe;
     [COLOR="DarkRed"]int toupper(Eingabe);[/COLOR]
     cout << Eingabe << "\n";
    
     if (Eingabe == 'LIST')
     {
     int Liste();
     return Liste();
     }else if (Eingabe == 'WURF')
     {
     int Wuerfeln();
     return Wuerfeln();
     }
     
     system("PAUSE");
     return EXIT_SUCCESS;
    }
     
  3. 12. Oktober 2008
    AW: C++ ToUpper

    nein
    d.h. dass du nur ein einzelnes zeichen übergeben kannst. Einen character eben.
    Die Funktion liefert dir einen Integer Wert zurück den du in einen Character converten kannst.

    D.h. du musst das ganze mit einer Schleife lösen.
    Hier ein link:

    toupper - C++ Reference

    Gruß
    meckes
     
  4. 13. Oktober 2008
    AW: C++ ToUpper

    Siehe Vorposter und die Referenz, welche ich dir gecshickt habe. Du musst sie auch lesen .
     
  5. 30. Oktober 2008
    AW: C++ ToUpper

    So, dass mit dem toUpper hab ich ja nun verstanden. thx nochmal an die Helfer .

    Jetzt hab ich aber ein neues Prob. ich will nun eine Eingabe tätigen, diese dann in einer variable speichern und auf dem speicher ort mit einem Zeiger zeigen und dessen inhalt ausgeben lassen. dieser inhalt wird dann an die methode toupper übergeben und soll dann halt groß ausgegeben werden.

    Mein prob ist nun, dass der compiler mir so komige zeichen zurück gibt ( keine hexadezimalen )

    Quellcode:

    Code:
    //Spielbeginn
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <stdlib.h>
    #include <ctype.h> 
    #include <stdio.h>
    #include <conio.h>
    #include <cctype>
    #include <time.h>
    
    void Liste( int,int,int,int,int,int );
    void auslesen( int );
    void strtoupper(char* str);
    
    using namespace std;
    
    
    int main() 
    {
     
     char Eingabe;
     string WURF;
     
     string LIST;
     
     cout << "\nSpielstart" << "\n\n";
     cout << "Bevor Sie nun entgueltig mit dem Spiel beginnen koennen, muss ich noch zwei Sachen erklaeren;" << "\n\n";
     cout << "Sie koennen sich mitten im Spiel Ihre Ergebnisliste ansehen. Geben Sie dazu einfach 'List' ein!" << "\n\n";
     cout << "Wollen Sie anfangen? Zum Wuerfeln bitte 'Wurf' eingeben!" << "\n\n";
     cin >> Eingabe;
     
     char e = Eingabe;
    
     char* Zeiger = & e;
    
     cout << "Wert des Zeigers: " << Zeiger << endl;
     
     strtoupper(Zeiger);
     
     cout << Eingabe << "\n";
    
     if (Eingabe == 'LIST')
     {
     Liste(false, false, false, false, false, false);
    
     }else if (Eingabe == 'WURF')
     {
     int Wuerfeln();
     return Wuerfeln();
     }
    
     
     
     system("PAUSE");
     return EXIT_SUCCESS;
    }
    
    void strtoupper(char* str)
    {
     int i=0;
     char c;
     
     while (str[i])
     {
     c=str[i];
     putchar (toupper(c));
     i++;
     }
    
    }
    

    Ausgabe:

    {bild-down: http://imageshack.us/a/img222/5831/44407482uq4.jpg}
    {bild-down: http://img222.imageshack.us/images/thpix.gif}


    hoffe jemand findet den fehler und kann mir helfen.
     
  6. 31. Oktober 2008
    AW: C++ ToUpper

    Naja. Ein C-String wird ausgegeben bis 'ne null vorkommt, bei dir kommt aber kein null vor, bzw. irgendwann zufällig im Speicher.

    Ein Normaler C-String:
    'H', 'a', 'l', ..., '\0'.

    Hier wird solange ausgegeben bis 'ne null gefunden wird, bei dir sieht das aber ganz anders aus:
    '<Deine Eingabe>', .. irgendwelche Werte die im Speicher stehen.

    Also entweder gibst du nur ein Zeichen aus weil du kein Array aus Zeichen hast, wo du bestimmen
    könntest wann die Ausgabe endet, oder du machst dir halt dieses Array .
     
  7. 31. Oktober 2008
    AW: C++ ToUpper

    kannst du mir nicht mal nen paar code zeilen schreiben, wie das mitm array aussieht? ich bekomm das irgendwie nicht hin.
     
  8. 31. Oktober 2008
    AW: C++ ToUpper

    Array ist da unsinnig. Mach's per putc/printf/std: stream& put ( cout.put )
     
  9. 31. Oktober 2008
    AW: C++ ToUpper

    komm bei dieser stelle einfach nicht weiter, wäre nett wenn du mir mal den code mit putc/printf/std: stream& put ( cout.put ) erstellen und posten könntest.

    Flu
     
  10. 31. Oktober 2008
    AW: C++ ToUpper

    in deiner strtoupper() funktion verwendest du
    Code:
    while (str[i])
    Die Schleife läuft durch, bis es auf ein 0-Byte stößt (Das markiert bei char-arrays immer das ende des strings)

    Aufrufen tust du das ganze so:
    Code:
     char* Zeiger = & e;
    
     cout << "Wert des Zeigers: " << Zeiger << endl;
     
     strtoupper(Zeiger);
    Merkst du was? e ist nur ein einzelnes Zeichen, und der Zeiger zeigt auch nur auf das Zeichen. Und deshalb fehlt das 0-Byte für die Schleife. Die komischen Zeichen kriegst du, weil du einfach irgendnen Speicherbereich (der nach e) ausgibst.
     
  11. 31. Oktober 2008
    AW: C++ ToUpper

    So hab iuch das auch schon gemacht, aber diese komigen Zeichen kommen wieder.
    aber ich weiß nicht wie mans anders macht.
     
  12. 8. November 2008
    AW: C++ ToUpper

    Dies ist mein code:

    Code:
    //Spielbeginn
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <stdlib.h>
    #include <ctype.h> 
    #include <stdio.h>
    #include <conio.h>
    #include <cctype>
    #include <time.h>
    
    void Liste( int,int,int,int,int,int );
    void auslesen( int );
    void strtoupper(char* str);
    
    using namespace std;
    
    
    int Spiel_Beginnen()
    {
     char Eingabe;
     string WURF;
     
     string LIST;
     
     cout << "\nSpielstart" << "\n\n";
     cout << "Bevor Sie nun entgueltig mit dem Spiel beginnen koennen, muss ich noch zwei Sachen erklaeren;" << "\n\n";
     cout << "Sie koennen sich mitten im Spiel Ihre Ergebnisliste ansehen. Geben Sie dazu einfach 'List' ein!" << "\n\n";
     cout << "Wollen Sie anfangen? Zum Wuerfeln bitte 'Wurf' eingeben!" << "\n\n";
     
     cin >> Eingabe;
     
     int i=0;
     char str[]={Eingabe};
     char c;
     
     /*while (str[i])
     { 
     c=str[i];
     putchar (toupper(c));
     i++;
     }*/
    
     cout << "Eingabe: " << c << endl;
    
    
     char e ;
    
     char* Zeiger = & e;
    
     cout << "Wert des Zeigers: " << e << endl;
     
     strtoupper(Zeiger);
     
     
    
     if (Eingabe == 'LIST')
     {
     Liste(false, false, false, false, false, false);
    
     }else if (Eingabe == 'WURF')
     {
     int Wuerfeln();
     return Wuerfeln();
     }
    
     
     
     system("PAUSE");
     return EXIT_SUCCESS;
    }
    
    void strtoupper(char* str)
    {
     while( *str != 0x00 ) 
     { 
     *str=toupper(*str); 
     ++str; 
     }
    
     cout << "Funktion: " << str << endl;
    }
    
    
    
    
    
    
     
  13. 8. November 2008
    AW: C++ ToUpper

    Wir haben dir doch den Fehler schon genannt. Du übergibst an deine strtoupper-Funktion einen einzelnen char. Sprich 1 Zeichen. Und in deiner strtoupper() funktion suchst du nach einem 0-Byte. Aber wie soll dass den gehen, wenn du nur 1 Zeichen hast?!

    machs doch so;
    Code:
    char bla = toupper(Eingabe);
    und noch paar fehler:
    Code:
     if (Eingabe == 'LIST')
    1. Zwischen ' ' schreibt man nur immer 1 Zeichen, nicht mehrere (mehrere zwischen " ")
    2. Ist Eingabe vom Typ char (d.h. nur ein einzelnes Zeichen) du willst aber mit mehreren vergleichen
    3. Vergleicht man C-Strings mit strcmp/strncmp

    Code:
    Liste(false, false, false, false, false, false);
    Deine Liste()-Funktion erwartet ints als Argumente, keine bools.
     
  14. 8. November 2008
    AW: C++ ToUpper

    Stimmt alles bis auf das mit der Liste, false hat den Wert 0.
     
  15. 13. November 2008
    AW: C++ ToUpper

    Neben den bereits genannten Fehlern ist mir aufgefallen das du nach der Funktion strtoupper den Zeiger wieder auf das erste Element setzen musst

    Also e zu einem Array machen und vlt erst ma was rein schreiben.

    Kleines Beispiel:

    Code:
    #include <iostream>
    using namespace std;
    
    int main()
    {
     char e[6]={"hallo"};
    char *Zeiger2= e;
     char *Zeiger = e;
    
     cout << "Text: " << Zeiger << endl;
     
     
    
    while( *Zeiger != 0x00 ) 
     { 
     *Zeiger=toupper(*Zeiger); 
     ++Zeiger; 
     }
     Zeiger=Zeiger2;
     
    cout << "Text: " << Zeiger << endl;
    
    
    system("pause");
    }
     
  16. 13. November 2008
    AW: C++ ToUpper

    Wofür den 2. Zeiger?

    Wenn du das ganze per Funktion ( wie du genannt hast: strtoupper) machst, dann brauchst du auch keinen 2. Zeiger. Du übergibst die Adresse auf die der Zeiger zeigt, nicht die Adresse des Zeigers.
     
  17. 14. November 2008
    AW: C++ ToUpper

    heißt es nicht einfach:
    Code:
    Eingabe.toupper();
    ? (Methode von char?)
     
  18. 15. November 2008
    AW: C++ ToUpper

    Ehm, nein. Er gibt das aus worauf der Zeiger zeigt, und das kann er auch mit der Variable e machen.

    Zu Thrake7: Nein .
     
  19. 15. November 2008
    AW: C++ ToUpper

    remaL du solltest vlt mal seine funktion genau lesen. danke
     
  20. 16. November 2008
    AW: C++ ToUpper

    Dann wurd's halt editiert, kann ich nicht erahnen, ich les nicht alles von vorne.
     
  21. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.