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; }
-
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.