Übersetzer



  • Hallo ich hab folgendes Problem ,ich kann immer nur ein Wort eingeben (und nicht zwei)was ich dann übersetzen kann,woran liegt das?

    #include <algorithm>
    #include <cctype>
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <stdio.h>
    #include <conio.h> 
    
    using namespace std;
    //ersetzen...
    void ersetzen( string &zeichenkette, string alt, string neu );
    char myToUpper(char c)
    {
        return std::toupper(static_cast<unsigned char>(c));
    }
    
    int main( void ) {
    int i;
    std::string zeichenkette;
    //Spanische Sonderzeichen	
    const unsigned char AE = static_cast<unsigned char>(142);
    const unsigned char ae = static_cast<unsigned char>(132);
    const unsigned char OE = static_cast<unsigned char>(153);
    const unsigned char oe = static_cast<unsigned char>(148);
    const unsigned char UE = static_cast<unsigned char>(154);
    const unsigned char ue = static_cast<unsigned char>(129);
    const unsigned char ss = static_cast<unsigned char>(225);
    //Sprache eingeben 
    cout <<"Wählen sie ihren Sprachen" << endl;
    cout <<"Deutsch - Spanisch [1]"<<endl;
    cout <<"Spanisch - Deutsch [2]"<<endl;
    //eingabe
    cin >> i; 
    if (i == 1) 
    {
      cout << "Geben sie bitte ein deutschen Satz ein" << endl;
      std::cin >> zeichenkette;
      cout << "Deutsch: " << zeichenkette << endl;
    //AA
    ersetzen(zeichenkette, "Hallo", "hola");    
    ersetzen(zeichenkette, "ich", "yo");    
    ersetzen(zeichenkette, "Eis", "helado ");    
    
    cout << "Spanisch: " << zeichenkette << endl;
    
    }
    else
    {
     cout <<"Geben sie bitte einen  spanischen Satz ein";
    }
    
     return 0;
    }
    
    void ersetzen( string &zeichenkette, string alt, string neu ) {
        short int x = 0;
        while( zeichenkette.find( alt, x ) < zeichenkette.length() ) {
            zeichenkette.replace( zeichenkette.find( alt, x ), alt.length(), neu );
            x++;
        }
    


  • Warum sollte es das auch tun?
    Editier bitte deinen Beitrag und tu den Code in die Tags.



  • roflo schrieb:

    Warum sollte es das auch tun?
    Editier bitte deinen Beitrag und tu den Code in die Tags.

    Hab ich gemacht



  • Es liegt an deiner Art die Eingabe einzulesen:

    std::cin >> zeichenkette;
    

    Das ließt nur bis zum nächsten Leerzeichen. Du wolltest wohl sowas wie

    std::getline(std::cin, zeichenkette);
    


  • cout << "Geben sie bitte ein deutschen Satz ein" << endl;
      getline(cin,zeichenkette,' ');
      cout << "Deutsch: " << zeichenkette << endl;
    

    So funktionierts immer noch nicht ,er erkennt dann nur ein Wort



  • Ist ja auch kein Wunder. Durch den dritten Parameter ' ' hast du getline wieder dazu gebracht nur bis zum nächsten Leerzeichen zu lesen. Diesen Parameter einfach weglassen dann ließt er die ganze Zeile.


Log in to reply