[ERLEDIGT]Char zu ASCII



  • std::string. Du hast ja den erforderlichen Header schon eingebunden. 😉



  • Also so:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(){
    
        string Eingabe = 'a'; // Der zu Verschlüsselnde Text
        cout << "Zuverschlüsselnder Text: "<< endl;
        cin >> Eingabe;
    
        int ascii=(int)Eingabe;       //a wird in int gecastet
    
        system("PAUSE");            //Beliebige Taste zum schließen drücken.
        return(0);
    }
    

    Wie soll ich jetzt den string in ASCII konvertieren?

    int ascii =(int)Eingabe;
    

    funktioniert ja nun nichtmehr.



  • strings schreibt man in doppelte Anführungszeichen.

    @Problem: Du möchtest auf jedes Zeichen einen bestimmten Wert addieren. Dazu musst du nichts nach int umwandeln. Hier eine mögliche Lösung mittels Funktionsobjekt. (ungetestet)

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    struct add_n
    {
        add_n(int n) : n(n) {}
    
        template <typename T>
        T operator () (T value) const
        {
            return value + n;
        }
    
    private:
        int const n;
    };
    
    int main()
    {
        cout << "Geben sie einen Text ein!\n";
        string input;
        getline(cin, input);
    
        cout << "Wie viel wollen Sie auf die Zeichen addieren?\n";
        int n;
        cin >> n;
    
        for_each(eingabe.begin(), eingabe.end(), add_n(n));
    
        cout << "Der verschlüsselte Text lautet \"" << input << "\"\n";
    }
    


  • Verstehe den Code nur nicht so ganz..

    for_each(eingabe.begin(), eingabe.end(), add_n(n));
    

    Woher nimmst du hier das eingabe ?? ist vorher im Code nie deklariert.



  • Flüchtigkeitsfehler. 🤡
    Sollte input heißen.



  • Mit input geht es dann auch.
    Nur das Problem ist beim Debugen gebe ich als Text "Hallo Welt" ein addiere 5 Zeichen und der verschlüsselte Text lautet "Hallo Welt". Irgendwas klappt da nicht so ganz.

    €: Selber Fehler auch mit anderen Zahlen beim addieren.



  • Ich sollte meinen Code in Zukunft besser testen. Ich habe an transform gedacht, aber das Funktionsobjekt für for_each verwendet. Man ändere

    template <typename T>
    T operator () (T value) const
    {
        return value + n;
    }
    

    in

    template <typename T>
    void operator () (T& value) const
    {
        value += n;
    }
    

    dann sollte es funktionieren.



  • Ja so klappt es, wie kann ich diesen Text wieder entschlüsseln um zu sehen ob es wirklich geklappt hat?



  • So hab mir den Code zum Verschlüsseln selber zusammen gebastelt:

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    struct sub_n
    {
        sub_n(int n) : n(n) {}
    
        template <typename T>
        void operator () (T& value) const
        {
    		value -= n;
        }
    
    private:
        int const n;
    };
    
    int main()
    {
        cout << "Geben sie einen Text ein!\n";
        string input;
        getline(cin, input);
    
        cout << "Wie viel wollen Sie auf die Zeichen subtrahieren?\n";
        int n;
        cin >> n;
    
        for_each(input.begin(), input.end(), sub_n(n));
    
        cout << "Der verschluesselte Text lautet \"" << input << "\"\n";
    
    	system ("PAUSE");
    
    }
    

    Klappt auch perfekt. Vielen dank an 314159265358979 für deine Hilfe.



  • Tipp: sub_n mit einer Zahl n erzeugen, ist dasselbe, wie add_n mit -n zu erzeugen. 🤡


Anmelden zum Antworten