üöä in string finden



  • Hallo!

    Eine Funktion hat als Übergabeparameter einen std::string, jetzt will ich herausfinden, ob der string einige, für das Programm ungültige Zeichen enthält. Bei z.B. Punkten geht das super billig mit find().

    Was mache ich bei ÜÖÄ und üöä? Wenn die einem std::string hinzugefügt wurden bekommt man nur umgewandelte, darstellbare Zeichen, aus ä wird z.B: o(mit ner Tilde drauf), ü zu ³ und ö zu ÷.

    Kann ich hinterher noch herausfinden ob einem std::string solche Sonderzeichen enthält?



  • Delryn schrieb:

    Was mache ich bei ÜÖÄ und üöä? Wenn die einem std::string hinzugefügt wurden bekommt man nur umgewandelte, darstellbare Zeichen, aus ä wird z.B: o(mit ner Tilde drauf), ü zu ³ und ö zu ÷.

    Bekommt man? Wäre mir noch nicht aufgefallen 😉
    Vielleicht solltest Du die Zeichen im selben Zeichensatz darstellen in dem sie auch eingegeben werden. Dann spricht nichts gegen str.find('ö') - wenn denn ein ö drin ist und kein geteilt-Zeichen...



  • string name("äüö");
    	cout<<name<<endl;
    

    erzeugt die oben erwähnten Ausgaben.



  • Dann hat Dein Editor vermutlich ein anderes Encoding als die Ausgabekonsole. Das ist aber kein Problem vom String-find 😉

    string name("aöü");
    cout << string[ name.find("ö") ] << endl;
    

    Dürfte dann auch Geteilt ausgeben, obwohl Du zweifelsfrei nach ö gesucht hast 😉 Würde mich überraschen wenn dem nicht so wäre.



  • Delryn schrieb:

    string name("äüö");
    	cout<<name<<endl;
    

    erzeugt die oben erwähnten Ausgaben.

    Ja, weil deine Shell die falsche Zeichensatzkodierung drin hat. Nur frag mich nicht, wie man die Win-Konsole umstellt.



  • Also kann ich ganz gefahrlos, egal welches Betriebssystem, egal welcher Compiler, ich kann stumpf nach ÖÜÄ und üöä suchen und gut ist?

    Die Ausgabekonsole ist eine ganz normale windows commandshell: cmd.exe



  • Delryn schrieb:

    Also kann ich ganz gefahrlos, egal welches Betriebssystem, egal welcher Compiler, ich kann stumpf nach ÖÜÄ und üöä suchen und gut ist?

    Die Ausgabekonsole ist eine ganz normale windows commandshell: cmd.exe

    Kann das niemand verifizieren?



  • Delryn schrieb:

    ich kann stumpf nach ÖÜÄ und üöä suchen und gut ist?

    Ja und Nein.

    Wenn du die nicht ASCII-Zeichen im Programm selbst stehen hast,
    findet er sie natürlich. Aber wenn dein Programm Daten von außen
    verarbeiten soll, hängt dies natürlich von der verwendeten Kodierung ab.

    ASCII-Zeichen sind nur definiert für 7 Bits


Anmelden zum Antworten