Aus einer Datei auslesen und Wert in anderen Datei speichern ??



  • Hallo,

    ich habe ein kleines problem 😞 , ich muss aus dieser datei, mit cpp, folgende (fett markierten)zeilen auslesen... :

    09 01:11:23 0401 T 0 tapVn: Message 111: no message to sent (d=14)
    09 01:11:23 0401 T 0 tapVn: Warte auf TAP-Record (Vielnutzer=0)
    09 01:11:24 0401 T 0 Field 0: '8285350'
    09 01:11:24 0401 T 0 Field 1: '09BG0113 SAMOA M3M3 SNMP Keine Antwort bei

    9 01:11:24 0401 T 0 tapVn: Field 1: '8285350'
    09 01:11:24 0401 T 0 tapVn: Field 2: '09BG0113 SAMOA M3M3 SNMP Keine Antwort bei SNMP-Abfrage (Timeout / system)'

    ...und in einer separaten datei abspeichern...

    die if anweisung die für das auslesen zuständig ist müsste nach 'Field 0:' suchen, if bedingung true than ausgabe dieser zeile (in der 'Field 0:' steht) und der drauffolgenden zeile.
    --> speichern dieser zeilen in separaten datei.

    ich habe leider keine ahnung wie ich dieses problem lösen kann. wäre sehr nett wenn mir jemand helfen könnte 🙂

    schonmal danke für eure hilfe

    Mathias



  • zeilenweisen in einnen string einlesen, nach 'Field 0:' suchen und gegebenenfalls in ofsttream ausgeben(ungetestet):

    ifstream in(txtein.txt);
    oftstream out(txtout.txt);
    string line;
    while (!in.eof()) {
      getline(in, line);
      if (line.find("Field 0:") != npos)
        out << line;
    }
    


  • Das Programm sieht jetzt folgendermaßen aus. Als was muss ich denn 'npos' deklarieren?? Und welchen Wert muss ich 'npos' zuweisen? Sorry habe leider nicht viel Ahnug aus diesem Gebiet...

    #include <iostream> 
    #include <fstream.h>
    #include <string> 
    using namespace std; 
    
    int main() 
    { 
      ifstream in; 
      in.open("C:\\log1.txt");
      ofstream out;
      out.open("C:\\txtout.txt");
      string line; 
      while (!in.eof()) {
      getline(in, line); 
      if (line.find("Field 0:") != npos)
    
      in.close(); 
      out << line;
      }
    }
    


  • ok, ich habe 'npos' als int deklariert. jetzt funktioniert das programm. es werden allerdings nicht nur die beiden zeilen ausgelesen sondern der gesamte dateiinhalt, der dann in der 'txtout.txt' gespeichert wird.
    weiss jemand wie ich nur diese beiden zeilen auslesen kann?? :

    [..]
    09 01:11:23 0401 T 0 tapVn: Warte auf TAP-Record (Vielnutzer=0)
    09 01:11:24 0401 T 0 Field 0: '8285350'
    09 01:11:24 0401 T 0 Field 1: '09BG0113 SAMOA M3M3 SNMP Keine Antwort bei
    9 01:11:24 0401 T 0 tapVn: Field 1: '8285350'
    [..]



  • x != std::string::npos



  • wo muss ich denn die zeile einfügen? muss ich dafür noch irgendwelche variblen deklarieren?



  • Versuchs mal mit:

    if (line.find("Field 0:") != std::string::npos)
    

    Wenn das war ist, aktuelle Zeile schreiben , folge zeile lesen und schreiben.



  • Danke es funktioniert 🙂

    Habe jetzt noch ein kleines Problem:
    Ich möchte mehrere Dateien auslesen. Die Dateien sind dieser Form gespeichert:

    log1-0401.00
    log1-0401.01
    log1-0401.02
    log1-0401.03
    ..
    log1-0401.09

    log1-0402.00
    log1-0402.01
    log1-0402.02
    log1-0402.03
    ..
    log1-0402.09

    usw...

    Nun möchte ich wie bereits oben beschrieben aus jeder dieser Dateien die Zeilen in denen 'field 0' und 'field 1' vorkommt, auslesen und in einer separaten Datei ablegen z.B. 'txtout.txt'?

    Wollte das Problem mit geschachtelten for-schleifen angehen. Aber irgendwie funktioniert das nicht so wie es soll.

    for (int i = 0; i<10; i++)
    for (int j = 0; j<10; j++)
    {
    ...
    ifstream in;
    in.open("C:\\log1-0"[i]."0"[j]);
    ...
    }

    Schonmal big thx für eure Hilfe!!!



  • den int-wert musst in char umwandeln. sh FAQ



  • welchen int wert meinst du? ich kann doch keinen char wert aufsummieren wie z.B. i++ ??



  • ich versuche den int auf diese weise umzuwandeln

    char mystring[15];
      for (int i = 0; i<10; i++) 
      {
    
      itoa(i, mystring, 10);
    
      ifstream in;
      in.open("C:\\log1-0401.0"[mystring]);
    

    erhalte allerdings folg. Fehlermeldung:
    22 c:\dokume1\mf06d1.mue\eigene1\eigene2\zus2.cpp
    invalid types `const char[15][char[15]]' for array subscript

    woran könnte das liegen?


Anmelden zum Antworten