Eingabe auswerten



  • Hallo, ich habe vor eine Art übersetzer zu schreiben (Deutsch -> Batch). Meine Frage wie bekomme ich es hin das bei "schreib HierKönnteIhrTextStehen" ein "echo HierKönnteIhrTextStehen" in eine Variable gespeichert wird? Danke Marc





  • Sorry finde dort nichts was mich wirklich weiter bringt 😉



  • Naja.. Du könntest dein Problem ein wenig besser erläutern.. 🙄



  • Also mein Programm kann schon Text speichern. Ich will wissen ob man nur das erste Wort überprüfen kann und die restlichen Wörter in einer Variable speichern kann. Sorry das ich das nicht so gut erklärt habe 🤡



  • Du liest ganz einfach das erste Wort ein, überprüfst es und liest dann den ganzen Rest ein. Wo ist das Problem?



  • Die Wenn du nun noch mehr If-Abfragen einbauen würdest, könntest du auch mehr Anweisungen übersetzen:

    #include <iostream>
    #include <cstdlib>
    #include <string>
    
    std::string conv_to_batch(const std::string& _str){
    	std::string anweisung("");
    	unsigned long cnt;
    	for(cnt=0;_str.substr(cnt,1)!=" ";++cnt){
    		anweisung.append(_str.substr(cnt,1));
    	}
    	std::string parameter("");
    	while(++cnt<=_str.length()){
    		parameter.append(_str.substr(cnt,1));
    	}
    	std::string batch_converted("");
    	if(anweisung=="Schreibe")
    		batch_converted.append("ECHO "+parameter);
    
    	return batch_converted;
    }
    
    int main(void){
    	system(conv_to_batch("Schreibe Hallo Welt!").c_str());
    	std::cin.get();
    }
    


  • Wie lese ich das erste Wort und dann den Rest ein? Leider verstehe ich goto anywere´s code nicht 😞



  • SonnY schrieb:

    Wie lese ich das erste Wort und dann den Rest ein? Leider verstehe ich goto anywere´s code nicht 😞

    Vielleicht trifft das Folgende eher deine Art zu codieren:
    (Es ist eigentlich genau der selbe Code)

    #include <iostream>
    #include <cstdlib>
    #include <string>
    
    std::string conv_to_batch(std::string _str)
    {
    	std::string anweisung="";
    	std::string parameter="";
    	std::string batch_converted="";
    	unsigned long cnt;
    
    	//Befehl einlesen
    	for(cnt=0;_str[cnt]!=' ';++cnt)
    	{
    		anweisung+=_str[cnt];
    	}
    
    	//Parameter, in diesem Fall der String "Hallo Welt!", einlesen
    	while(++cnt<=_str.length())
    	{
    		parameter+=_str[cnt];
    	}
    
    	//Auswerten/In Batch "konvertieren":
    	if(anweisung=="Schreibe")
    	{
    		batch_converted+="ECHO "+parameter;
    	}
    
    	return batch_converted;
    }
    
    int main(void){
    	system(conv_to_batch("Schreibe Hallo Welt!").c_str());
    	std::cin.get();
    }
    

Anmelden zum Antworten