Parsen



  • hey,
    da ich nun es endlich geschafft hab mein rkam in eine html datei zu schreiben hab ich meine aufgabe erfühlt
    nun hat mir mein "vorgesetzter" die aufgabe geben aus dieser datei etwas zu parsen dann von einander abzuziehen und in divs auszugeben 😃
    kann mir vllcht jemand eine seite sagen wo ich parsen lernen kann
    hab eben schon bisschen gegooglt und auch hier im forum was gefunden (sowas wie find und parse(Until)) aber ich brauch ein tut 😕

    danke schonmal 😃
    Enno





  • gut nun weiß ich was sache ist 😃 danke dafür

    programmieren kann ich es immer noch nicht!

    in meinem jürgen wolf buch hab ich auch keine hilfen :/(ich weiß ihr hast das buch)
    ich mein da steht nur so ein getline gelabber drin

    ich suche weiter 😃 und nehme tips gerne an



  • -> Du musst das selber machen. Es gibt kein parse_everything().



  • ich will ja auch nicht alles sondern nur 2 bestimmte zeilen



  • Es gibt auch keine Funktion parse_zwei_bestimmte_zeilen(). -> Selbst machen. Datei einlesen, gucken was drin steht. So schwer ist das nun nicht.



  • wunderbar ... ich kannns nun einlesen und ausgeben aba wie guck ich mir nun die einzelnen zeilen an und geb sie wieder aus?


  • Mod

    Enno schrieb:

    wunderbar ... ich kannns nun einlesen und ausgeben aba wie guck ich mir nun die einzelnen zeilen an und geb sie wieder aus?

    Versetz dich mal ernsthaft in eine Person, die nicht du bist und lies dir alle deine Beiträge in diesem Thread durch. Hättest du als Fremder auch nur den geringsten Schimmer, wovon der Threadersteller faselt, was er tut, was er wissen möchte? Nein? Das geht uns genau so.

    Lies dir mal durch:
    http://www.c-plusplus.net/forum/200753
    http://www.tty1.net/smart-questions_de.html



  • ich versuch mich mal zu erklären!

    vorweg das hier hab ich grade:

    #include <iostream>
    #include <fstream> 
    
    using namespace std; 
    
    int main(void) 
    { 
      ifstream Quelldatei; 
      Quelldatei.open("example.html", ios_base::in);
    
      if (!Quelldatei) 
        cerr << "Eingabe-Datei kann nicht geöffnet werden\n"; 
      else { 
        ofstream Zieldatei("out.txt"); 
        if (!Zieldatei)
          cerr << "Ausgabe-Datei kann nicht geöffnet werden\n"; 
        else { 
          char c;
          char a[20000]; 
          int i=0; 
          while (Quelldatei.get(c)) { 
    	a[i]=c; 
    	i++; 
    
          } 
          for (int j=0;j<i;j++){ 
             cout << a[j]; 
    
          } 
        } 
      } 
     return 0; 
    }
    

    so nun würde ich gerne nicht alles ausgeben sondern nur 2 bestimmte zeilen

    frage für mich ist nun wie kann ich überhaupt eine zeile auslesen und wie kann ich bestimmen welche er nehmen soll?


  • Mod

    😕 Ist dies das erste Mal, dass du C++ benutzt? Lass die Standardbibliothek für dich arbeiten! Besonders dies wird sehr nützlich sein:
    http://www.cplusplus.com/reference/string/

    Eine weitere Frage ist jedoch: Brauchst du überhaupt die Zeilen? html ist schließlich kein zeilenbasiertes Format, sondern die Struktur kommt aus den Tags. Viele Anfänger denken immer, Zeilen wären etwas besonderes. Ein Zeilenumbruch ist auch nur ein Zeichen wie jedes andere.
    Weiterhin ist die Unsitte recht verbreitet, erst Daten zeilenweise aus einem Stream zu lesen, die Zeile in einen anderen Stream zu packen und dann mit den Operatoren zum formatierten Lesen (http://www.cplusplus.com/reference/iostream/istream/operator>>/) die Zeile zu parsen, anstatt die Daten gleich aus dem Ursprungsstream zu parsen.



  • Ja es ist mein erstes mal 😃
    vllcht weißte das noch du hast mir gestern schon geholfen bin nun den 4tagen am c++ bbenutzen und habe leider nur das doofe JWolf a-z hier!

    zu dem html dokument

    Inhalt von /proc/meminfo
    MemTotal:        3947984 kB
    MemFree:         2371948 kB
    Buffers:           60684 kB
    Cached:           691980 kB
    SwapCached:            0 kB
    Active:           818716 kB
    Inactive:         461088 kB
    Active(anon):     527984 kB
    Inactive(anon):    22416 kB
    Active(file):     290732 kB
    Inactive(file):   438672 kB
    Unevictable:           0 kB
    

    so ein quak steht da drin .... nun soll ich (zitat vom vorgesetzten) memtotal und memfree prasen und von einander abziehn ...
    d.h. also ich muss das irgentwie einlesen und dann in die zeilen kommen um es ausgeben zu können oder?


  • Mod

    WTF? Wieso schreibst du die erst in die HTML-Datei um danach die Daten wieder auszulesen? Ist das eine Arbeitsbeschaffungsmaßnahme? Die Aufgabe ist mir ehrlich gesagt zu dumm, um dir da motiviert zu helfen. Das macht einfach keinen Sinn.



  • nein ist ein praktikum
    hab mich hier auf eine ausbildung beworben und die meinten ich soll mal 1 woche ausprobieren
    naja egal ...
    d.h. ich kann das auch einfach direkt aus /proc/meminfo auslesen? wenn ja mach das lieber 😃



  • ich hab ein ich vergessen ...
    mach ICH das lieber!


  • Mod

    Ich rate mal: Die Gesamtaufgabe ist, die Daten aus den Dateien zu lesen, ein paar Rechnungen damit anzustellen und das Ergebnis in Form einer HTML-Datei zu repräsentieren? Das würde nämlich halbwegs sinnvoll sein. Und auch wesentlich einfacher.



  • ja richtig
    tut mir leid das ich mich nicht vernünftig ausdrücken kann



  • #include <iostream>
    #include <fstream>
    #include <string>
    
    int main()
    {
        using namespace std;
        long mem_total = -1;
        long mem_free = -1;
        ifstream datei("/proc/meminfo");
        for( std::string wort; (mem_total < 0 || mem_free < 0) && datei >> wort ; )
        {
            if( wort == "MemTotal:" )
                datei >> mem_total;
            else if( wort == "MemFree:" )
                datei >> mem_free;
        }
        if( datei )
            cout << "Ergebnis: " << (mem_total-mem_free) << " = (total)" << mem_total << " - (free)" << mem_free << endl;
        else
            cerr << "Fehler beim Lesen/Parsen" << endl;
        return 0;
    }
    

    Ausgabe:

    Ergebnis: 1576036 = (total)3947984 - (free)2371948
    


  • ok nun hab ich das verstanden und eingebaut

    nun sagt er ich soll das ganz in meinem html dokument als DIV speicher???

    MT = wert von memtotal
    MF = wert von memfree

    dabei soll ich 150% / MT = PWrechnen und MF / PW

    das soll dann ein div ergebn was 150 pixel lang ist

    meine frage nun:
    muss ich das mit der richtgen html snytax einfach in die datei schreiben???

    danke schonmal für das geduldige helfen



  • Könntest du bitte versuchen, auf Deutsch zu schreiben?



  • ich kann nicht besser erklären was ich machen soll

    ich kann vllcht noch dazu sagen das doch ein DIV so ein block in html ist

    Mit <div> leiten Sie ein allgemeines Block-Element ein, in das Sie mehrere
     andere Block-Elemente einschließen können (div = division = Bereich). Alles, was 
    zwischen diesem Tag und dem abschließenden </div> steht, wird als Teil des 
    Bereichs interpretiert.
    


  • Kellerautomat schrieb:

    Könntest du bitte versuchen, auf Deutsch zu schreiben?

    Ich übersetze:

    *Ok, nun habe ich das Verstanden und Eingebaut.
    Nun sagt er, ich soll das ganze in meinem HTML-Dokument als DIV speichern?

    MT = wert von memtotal
    MF = wert von memfree

    Dabei soll ich 150% / MT = PW und MF / PW ausrechnen.

    Das soll dann einen DIV ergeben, welches 150 Pixel lang ist.

    Meine Frage ist nun:
    Muss ich das mit der richtigen HTML Syntax einfach in die Datei schreiben?

    Danke schon mal für das geduldige Helfen!*

    Antwort:

    DIV ist ein HTML-Tag, genauer genommen ist es ein DHTML-Layer. Lern am besten (X)HTML und CSS 😉

    Die Breite wird im CSS-Stylesheet selbstverständlich durch ein Attribut mit numerischem Wert bestimmt (den numerischen Wert mit px-Suffix schreiben).

    Edit: Am besten einfach ins <style> Tag im head einbauen.


Anmelden zum Antworten