CString Operationen?



  • Man würde den case vorher prüfen und könnte es trotzdem besser lesen.

    Ändert ausserdem nichts an der Tatsache dass es scheiße aussieht, also kein Argument gegen toupper.



  • aha... danke!

    aber:

    mein schöner DateiName:

    "abc def ghi.mp3"

    wird elegant zu

    "Abc" gemacht, ohne .mp3 oder andere Sachen...



  • ja, dein ' ' (leerzeichen) wird ja auch ver-and-et.
    versuch mal

    char up (char c) { //helferlein
      return toupper(c);
    }
    
    int main () {	
      //mit char arrays
      char n[] = "abc def.mp3";
      use_facet<ctype<char> >(locale()).toupper(n, n+sizeof(n));
      cout << n << endl;
      //mit std::strings
      string m = "abc def.mp3";
      transform (m.begin(), m.end(), m.begin(), up);
      cout << m << endl;
    }
    

    CString bietet vielleicht ähnliches. da musst du aber die leute im MFC-forum fragen.



  • Ich würde etwas in der Art vorschlagen, ist aber ungetestet und nur schnell hingehackt...

    void convert(char* str) {
      while(*str) {
        if(*str++ == ' ')
          *str = static_cast<char>(toupper(*str));
      }
    }
    

    Falls toupper(0) nicht 0 zurückgibt muss man noch nen check vorher einbauen



  • MaSTaH schrieb:

    Ich würde etwas in der Art vorschlagen, ist aber ungetestet und nur schnell hingehackt...

    void convert(char* str) {
      while(*str) {
        if(*str++ == ' ')
          *str = static_cast<char>(toupper(*str));
      }
    }
    

    Falls toupper(0) nicht 0 zurückgibt muss man noch nen check vorher einbauen

    Diese Funktion funktioniert allerdings nicht für das 1. Zeichen.
    So sollte es gehen:

    void convert(char* str) {
       if(*str) 
          *str = static_cast<char>(toupper(*str));
       while(*str) 
          if(*str++ == ' ')
            *str = static_cast<char>(toupper(*str));
    }
    


  • Hi!

    Es sollte doch wohl "!= ' '" statt "== ' '" heißen oder?

    void convert(char* str) {
       while(*str) {
          if(*str == ' ') // EDIT: aus != -> ==
            *str = static_cast<char>(toupper(*str));
          ++str;
       }
    }
    

    Code-Hacker



  • Code-Hacker: Wieso? Deine Version würde alle Zeichen ausser dem Leerzeichen in den Uppercase wandeln. Das war aber nicht gefragt (und geht btw. einfacher).



  • ---



  • Hi!

    MaSTaH schrieb:

    Code-Hacker: Wieso? Deine Version würde alle Zeichen ausser dem Leerzeichen in den Uppercase wandeln. Das war aber nicht gefragt (und geht btw. einfacher).

    Ah, sry, sehe schon.
    Ansonsten ist das die selbe Version wie deine, nur das das erste Zeichen mitgemacht wird.

    Code-Hacker



  • Nö, schau mal genau hin... Deine Version ändert den String nicht :p 😉 .



  • MaSTaH schrieb:

    Nö, schau mal genau hin... Deine Version ändert den String nicht :p 😉 .

    Meinst du MEINE Version?



  • CodeHackers Version war gemeint.


Anmelden zum Antworten