Umwandeln von mehreren Zeichen in eines



  • Hallo liebe c++ gemeinde.

    Ich bin erst neu hier und wollte nur mal was fragen.

    Ich arbeite an einem Konverter der mir Morsecode in Text ausgibt.
    Soweit funktioniert auch alles.
    Wenn ich z.B. "- . ... - " eingebe gibt er mir TEST aus.

    Nur frage ich mich wie ich es machen kann das ich mehrere wörter eingeben kann.
    Wenn ich z.B. "- . ... - - . ... - " eingebe soll er mir TEST TEST ausgeben.

    #include <iostream>
    #include <string>
    #include <sstream>
    
    std::string UmwandelnInText(std::string morse, std::string const morsecode[]);
    
    int main()
    {
        std::string eingabe = "";
        std::cout << "Geben Sie bitte den MorseCode ein (Leerzeichen nach Morsebuchstaben bsp.- . ... - ): ";
        std::getline(std::cin, eingabe);
        std::string const morsecode[] = {".-", "-...", "-.-.", "-..", ".", "..-.",
        "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-",
        ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
        std::cout << UmwandelnInText(eingabe, morsecode) << std::endl;
        return 0;
    }
    
    std::string UmwandelnInText(std::string morse, std::string const morsecode[])
    {
        std::string ausgabe = "";
        std::string aktuellerBuchstabe = "";
        std::istringstream ss(morse);
        std::size_t const zeichen = 26;
        while(ss >> aktuellerBuchstabe)
        {
            std::size_t index = 0;
            while(aktuellerBuchstabe != morsecode[index] && index < zeichen)
            {
                ++index;
            }
            ausgabe += 'A' + index;
        }
        return ausgabe;
    }
    

  • Mod

    In Morsenachrichten werden Buchstaben durch einen einfachen Abstand getrennt (hier also ein Leerzeichen) und Wörter durch einen mehrfachen Abstand. Das könntest du übernehmen.


Anmelden zum Antworten