Kleines Problem mit Funktion



  • Guten Tag allerseits,

    in der Uni haben wir gerade mit C++ angefangen und sollen nun in einer Übung folgendes realisieren:

    Folgende Zeichenkette soll exakt so ausgegeben werden:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/transitional.dtd">
    <html><head><title>Titel</title></head><body></body></html>

    Dazu ist ein Grundgerüst eines Programmes vorgegeben, das modifiziert werden soll. Sinn der Übung ist das Erlernen des Umgangs mit Funktionen. Ich habe mir das Skript mal angeschaut und einige externe Quellen zu Rate gezogen, aber mein Programm läuft nicht so, wie es laufen sollte.

    Mein Quellcode lautet:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string printDocType()
    {
    	string result;
    	result = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \n \"http://www.w3.org/TR/html4/transitional.dtd\"> \n";
    
    	return result;
    }
    
    string printTag(string tag_name, string content)
    {
    	string result;
    
    	result = " < " << tag_name << " > " << content << " </ " << tag_name << " > ";
    
    	return result;
    }
    
    /** Dies ist der Einstiegspunkt des Programms. Hier soll nichts verändert werden! */
    int main(int argc, char* argv[])
    {	
    	cout << printDocType();
    	cout << printTag("html", 
    	                 printTag("head", 
    	                          printTag("title", "Titel"))+
    	                 printTag("body", "")) << "\n";
    	return 0;
    }
    

    Dabei waren die oberen beiden Funktionen jeweils leer, bis auf "string result" und "return result" und die main-Funktion des Programmes ist so vorgegeben und darf nicht verändert werden. Die erste meiner Funktionen scheint so auch zu stimmen, nur die zweite macht irgendwie Schwierigkeiten.

    Ist wahrscheinlich ein typischer Fall von "Wald vor lauter Bäumen nicht sichtbar", ergo wäre ich über jeden Denkanstoß überaus dankbar.

    Viele Grüße
    Zateha



  • Zateha schrieb:

    aber mein Programm läuft nicht so, wie es laufen sollte.

    Das ist keine besonders gute Fehlerbeschreibung 😉 (siehe Link in meiner Signatur)

    result = " < " << tag_name << " > " << content << " </ " << tag_name << " > ";
    

    Versuch mal die Zeile selber zu "parsen", d.h. von links nach rechts zu lesen, was du da machst. Ich fall gleich am Anfang auf die Nase:

    " < " ist ein const char*, tag_name ein std::string. Ich kenne keinen operator<<, der einen const char* und einen std::string akzeptiert. Vielleicht meinst du einen anderen Operator?



  • Hallo,

    danke für den Hinweis. + war dann doch der Operator der Wahl. 🙂

    Grüße


Anmelden zum Antworten