In Charvector einfügen [beantwortet]



  • Hallo! 🙂

    Ich lese in einem Programm einen Text in einen charvector ein (weil ich nich weiß, wie ichs besser machen soll) und möchte nun alle Umlaute durch die entsprechenden lateinischen Buchstaben ersetzen (sprich ü = ue).
    Kann mir jemand sagen, wie ich das am besten mache?

    Danke sehr im Voraus!

    hier mein Einleseverfahren, falls es was zu bemäkeln gibt 🙂 :

    fstream source;
        source.open(sourcefile.c_str(), ios::binary|ios::in);
    
        vector<char> text;
        char ch;
    
        while(source.get(ch))
            text.push_back(ch);
    


  • Am einfachsten wäre wohl sowas wie

    while(source.get(ch))
    {
        if(ch == 'ä')
        {
            text.push_back('a');
            text.push_back('e');
        }
        // andere Umlaute
        else
            text.push_back(ch);
    }
    

    Geht aber sicher auch irgendwie etwas eleganter.


  • Mod

    Ich schlage Einlesen in einen std::string (effektiv ein vector<char> mit Zusatzalgorithmen zur Zeichenkettenmanipulation) vor. Danach eine Kombination der string-Funktionen find und replace.

    edit: Oh, ich sehe gerade, du liest die Zeichenkette erst noch ein. Dann ist ipsecs Lösung besser. Trotzdem solltest du für Zeichenketten std::string nehmen (kennt übrigens auch push_back, du musst also gar nichts ändern).



  • Danke Sepp, dann versuch ich mich mal mit string!

    Und danke ipsec, das mach ich dann so! 🙂


Log in to reply