Hilfe mit auslesen



  • im prinzip muss ich mir doch sowas in eine klasse packen oder?

    ifstream f;  // Datei-Handle
        string s;
        f.open(argv[1], ios::in); // Öffne Datei aus Parameter
        while (!f.eof())          // Solange noch Daten vorliegen
        {
            getline(f, s);        // Lese eine Zeile
            cout << s << endl;    // Zeige sie auf dem Bildschirm
    
        }
        f.close();                // Datei wieder schließen
    

  • Mod

    Etwas Inspiration, wie so etwas vom Grundgerüst her aussehen könnte:

    #include <fstream>
    #include <sstream>
    #include <iostream>
    
    class HTML_File
    {
    private:
      std::stringstream data;
    public:
      HTML_File& operator<<(std::istream& in)
      {
        data << "<pre>";
        for(char c; in.get(c);)
          if (c == '<') data << "&lt";  // HTML-Sonderzeichen ersetzen
          else 
            if (c == '>') data << "&gt";
            else
              data.put(c);
        data << "</pre>";
        return *this;
      }
      HTML_File& operator<<(const char *in)
      {
        data << in;
        return *this;
      }
    
      friend std::ostream& operator<<(std::ostream& out, const HTML_File& file)
      {
        return out << "<!DOCTYPE html>\n<html><body>"
                   << file.data.rdbuf()
                   << "</body></html>\n";
      }
    };
    
    int main()
    {
      HTML_File html; 
      std::ifstream cpu("/proc/cpuinfo");
      std::ifstream devices("/proc/devices");
      html << "Inhalt von /proc/cpuinfo:" << cpu
           << "Inhalt von /proc/devices:" << devices;
    
      std::ofstream out("example.html") ;
      out << html;
    }
    

    Ich vermute jedoch mal, dass du davon nicht ein Wort verstehst, richtig?


  • Mod

    Enno schrieb:

    im prinzip muss ich mir doch sowas in eine klasse packen oder?

    ifstream f;  // Datei-Handle
        string s;
        f.open(argv[1], ios::in); // Öffne Datei aus Parameter
        while (!f.eof())          // Solange noch Daten vorliegen
        {
            getline(f, s);        // Lese eine Zeile
            cout << s << endl;    // Zeige sie auf dem Bildschirm
    
        }
        f.close();                // Datei wieder schließen
    

    Das ist der typische Müll den man bei Jürgen Wolf lernt. Besser erst einmal abgewöhnen, dann richtig machen, dann in Klasse packen.

    Sieh auch:
    http://www.c-plusplus.net/forum/272350



  • zum glück bin ich ja nun hier 😃 kann ich den jürgy ab würgy xD



  • ich versteh vllcht 1/3

    wenn du mich jetzt auch noch teachen möchtest gerne 😃
    ansonst werd ich mir das alles so vornehmen



  • Enno schrieb:

    ich versteh vllcht 1/3

    wenn du mich jetzt auch noch teachen möchtest gerne 😃
    ansonst werd ich mir das alles so vornehmen

    Das sind Grundlagen, um ein gutes Buch wirste dich nicht herumschlängeln können. 😉



  • wo soll ich den nun ein gutes buch herzaubern?
    ich mein ich bin nur noch 2 tage hier
    und wenn ich das nicht schaffe darf ich nicht wieder kommen = no ausbildung


  • Mod

    Enno schrieb:

    ich versteh vllcht 1/3

    wenn du mich jetzt auch noch teachen möchtest gerne 😃
    ansonst werd ich mir das alles so vornehmen

    Ist vermutlich ein bisschen zu viel sowohl für meine Zeit als auch für den Inhalt, den man in so einem Internetforum noch transportieren kann. Vielleicht hilft es, wenn ich es so schreibe:

    #include <fstream>
    #include <iostream>
    #include <string>
    
    class HTML_File
    {
    private:
      std::string data;
    public:
      void add_verbatim(std::istream& in)
      {
        data += "<pre>";
        char c;
        while(in.get(c))
          if (c == '<') data += "&lt";
          else 
            if (c == '>') data += "&gt";
            else
              data += c;
        data += "</pre>";
      }
      void add_text(const char *in)
      {
        data += in;
      }
    
      std::string to_string()
      {
        std::string out = 
          "<!DOCTYPE html>\n<html><body>"
          + data
          + "</body></html>\n";
        return out;
      }
    };
    
    int main()
    {
      HTML_File html; 
      std::ifstream cpu("/proc/cpuinfo");
      std::ifstream devices("/proc/devices");
      html.add_text("Inhalt von /proc/cpuinfo:");
      html.add_verbatim(cpu);
      html.add_text("Inhalt von /proc/devices:");
      html.add_verbatim(devices);
    
      std::ofstream out("example.html") ;
      out << html.to_string();
    }
    

    Dies ist im Prinzip noch das gleiche Programm, ich habe die Operatorüberladung (Stichwort!) durch explizite Funktionsaufrufe ersetzt und den für Anfänger vielleicht etwas unintuitiven stringstream (ist eigentlich das gleiche wie die hoffentlich bekannten istream/ostream cin.cout) durch einen String ersetzt, bei dem die Operationen zum Zusammensetzen einfache Additionen sind (dürfte aber etwas weniger effizient sein, könnte man jedoch mit ein paar Konstrukten die ich jetzt nicht auch noch zusätzlich einführen möchte wieder ändern).

    Wenn jetzt noch wesentliches unklar ist (an der Technik), dann kann ich dich nur an die genannten Grundlagenbücher verweisen, ich kann das hier nicht alles erklären. Die Grundidee zur Vorgehensweise ist, die Dateien in eine verbatim-Umgebung zu packen (pre-Tags), dabei muss man die Zeichen mit Sonderbedeutung in HTML ersetzen, sonst denkt der Browser, dass das HTML-Code ist. Anderer Text wird einfach eingefügt (hier kann man auch weiteren HTML-Code einfügen, da ich nichts filtere). Bei der Ausgabe wird dann noch ein gültiger HTML-Header vor die Daten und die nötigen Tags drumherum gesetzt.



  • nno schrieb:

    ich mein ich bin nur noch 2 tage hier
    und wenn ich das nicht schaffe darf ich nicht wieder kommen = no ausbildung

    😮
    Dann aber mal schnell!



  • vielen dank 😃

    das hilft aufjeden fall 😃
    werd heutabend noch mal mit einem kumpel mich zusammen setzen
    und ich muss sagen ihr jungs seit fix hier

    ❤


Anmelden zum Antworten