Cpp - HTML umwandler, wörter werden nicht erkannt?



  • Hallo

    Ich habe ein problem mit einem programm, das *.cpp Dateien in *.html dateien "umwandeln" soll, also entsprechnde tags für sonderzeichen und code-highlightings setzen soll. Ich habe if und else if abfragen gemacht, um je nach schlüsselwort die tags für schriftfarbe und fürs fett schreiben zu setzen. nur leider werden bis auf ein wort (in meinem fall "namespace") alle ignoriert..

    Könnt ihr mir vielleicht helfen, und sagen wo der fehler ist?
    mein betriebssyxstem ist windoof und der compiler der dev-c++.

    hier der code:

    #include <iostream>
    #include <cstdio>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int zeichen();
    int worte();
    string alt;
    string neu;
    
    int main()
         {
         cout<<"Eingabe: ";
         cin>>alt;
         cout<<"Ausgabe: ";
         cin>>neu;
         zeichen();
         worte();
         cout<<"Abgschlossen."<<endl;
         getchar();
         }
    
    int zeichen()
         {
         string test;
         ifstream in(alt.c_str());
         ofstream out("TEMP.DAT");
         char ch;
         while(in.get(ch))
              {
              if(ch == '<')
                   {
                   out<<"&lt;";
                   }
              else if(ch == '>')
                   {
                   out<<"&gt;";
                   }
              else if(ch == '\n')
                   {
                   out<<"<br>";
                   }
              else if(ch == '#')
                   {
                   out<<"<font color=\"green\">#";
                   while(ch != '>')
                        {
                        in.get(ch);
                        if(ch == '<')
                             {
                             out<<"&lt;";
                             }
                        else
                             {
                             out<<ch;
                             }
                        }
                   out<<"</font>";
                   }
              else
                   {
                   out<<ch;
                   }
              }
         }
    
    int worte()
         {
         ifstream in("TEMP.DAT");
         ofstream out(neu.c_str());
         string wort;
         out<<"<html>\n<body>\n<font face=\"arial\">"<<endl;
         while(in>>wort)
              {
              if(wort == "asm")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "auto")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "bool")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "break")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "case")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "catch")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "char")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "class")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "const")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "const_cast")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "continue")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "default")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "delete")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "do")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "double")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "dynamic_cast")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "else")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "eunum")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "explicit")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort== "extern")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "false")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "float")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "for")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "friend")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "goto")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "else if")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "inline")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "int")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "long")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "mutable")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "namespace")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "new")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "operator")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "private")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "protectet")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "public")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "register")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "reinterpret_cast")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "return")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "short")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "signed")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "sizeof")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "static")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "static_cast")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "struct")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "switch")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "template")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "this")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "throw")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "true")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "try")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "typedef")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "typeid")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "typename")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "union")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "unsigned")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "using")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "void")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "volatile")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "wchar_t")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else if(wort == "while")
                   {
                   out<<"<b><font color=\"blue\">"<<wort<<"</font></b>"<<" ";
                   }
              else
                   {
                   out<<wort<<" ";
                   }
              }
         out<<"</font>\n</body>\n</html>"<<endl;
         }
    

    Sorry das es so lang ist, wegen den ganzen if /else if geschichten da...

    ich hab als beispiel ein einfaches hello world wie dieses versucht umzu wandeln:

    #include <iostream>
    #include <stdio.h>
    
    using namespace std;
    
    int main()
    {
    cout<<"Hallo"<<endl;
    }
    

    Danke schonmal



  • Kann beim Überfliegen nichts finden.
    Hast Du Dir mal angeshaut was in "Wort" steht und mal mit nem Debugger durchgesteppt ?

    Ansonsten würde es sich doch anbieten ne set zu nehmen, die mit den Worten zu füttern die blau und fett werden sollen und dann zu schaueb das Wort darin vorkommt ?!

    Würde Dir das lange abfrtagen ersparen und ist pflegeleichter.

    ODer ne map in der die Atribute für das Wort genau definiert sind....


Anmelden zum Antworten