Ü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.