Zeile in Datei herausfinden

Hallo,

ich suche ein Befehl mit dem ich die Zeile vom Text „Aktien:“ herausbekomme.
Die Datei ist in etwa so aufgebaut:
Aktien:
12345

Ich will nun das der Wert 12345 in eine andere Datei abgespeichert wird.
Mit

#include 

outfile 

könnte ich ja dann den Wert abspeichern oder nicht? Dafür bräuchte ich dann die Zeile von "Aktie:"

Kennt ihr ein Befehl oder wie ich es inetwa schaffen würde?


MFG 

Sero

Hallo,

ich suche ein Befehl mit dem ich die Zeile vom Text „Aktien:“
herausbekomme.
Die Datei ist in etwa so aufgebaut:
Aktien:
12345

Ich will nun das der Wert 12345

Einige wege :smile:

Pseudocode :

wiederholen bis datei ende
Zeile lesen
vergleiche die ersten 11 zeichen mit Aktien:
JA : nächste Zeile lesen
erste 4 zeichen entfernen
letzte 5 zeichen entfernen
aktiendaten = das was übrig bleibt
NEIN : nix;
wiederholung ende

oder einfach jede zweit zeile lesen
und dann nur die und entfernen.

oder genauer den fall beschreiben in welcher umgebung das passieren soll . (Was steht da noch in der datei.)

oder genauer den fall beschreiben in welcher umgebung das
passieren soll . (Was steht da noch in der datei.)

Das ist eine Index.php und dort stehen noch einige andere Sachen. Die hat insgesamt 675 Zeilen, kann aber auch immer wieder Variieren und deshalb muss ich ja erstmal die Zeilennummer herausbekommen :smile:

Hallo Seroc++,

Das ist eine Index.php und dort stehen noch einige andere
Sachen. Die hat insgesamt 675 Zeilen, kann aber auch immer
wieder Variieren und deshalb muss ich ja erstmal die
Zeilennummer herausbekommen :smile:

Du könntest mit einem sog. „regulären Ausdruck“ suchen.
http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

In modernem C++ soll angeblich immer eine „reguläre-Ausdruck“-
Bibliothek dabeisein, in VS2010 ist das schon ziemlich gut
gelöst, in gcc (4.6) allerdings nur sehr rudimentär, es
geht fast gar nichts:
http://gcc.gnu.org/onlinedocs/libstdc++/manual/statu…
(28 - Regular expressions)

Falls Du Visual C++ 2010 oder einen ähnlichen C++0x-
konformen Compiler hast, würde folgendes gehen:

C:\> such.exe index.php

[such.cpp]

#include 
#include 
#include 
#include 
#include 

using namespace std;

 int main(int argc, char\* argv[])
{
 // Datei oeffnen
 ifstream infile( argv[1], ios::binary );
 if( !infile ) return(-1);
 // Datei einlesen
 string html( (istreambuf\_iterator(infile)), 
 istreambuf\_iterator() );

 // Einen Zeiger (Iterator) auf Anfang/Ende des HTML setzen
 string::const\_iterator von=html.begin(), bis=html.end();

 // Dingens Suche vorbereiten
 smatch treffer;
 regex **r("td\>Aktien:/td\>.\*?[\\n\\r].\*?td\>\\D\*(\\d+).\*?/td\>")**;

 // Suchen
 vector zahlen;
 while( regex\_search(von, bis, treffer, r) ) {
 zahlen.push\_back( stoi( treffer[1]) ); // Zahl abspeichern
 von = treffer[0].second; // naechsten Treffer vorbereiten
 }

 // Ergebnisse ausgeben
 copy( zahlen.begin(), zahlen.end(), 
 ostream\_iterator(cout, "\n") );

 return 0;
}

Falls Du auf gcc oder einen ähnlichen Compiler ohne regex>
angewiesen bist, kannst Du auch die boost-Bibliothek verwenden:
http://www.boost.org/
Diese hat eine gut funktionierende reguläre-Ausdruck-Bibliothek,
welche fast genau wie hier gezeigt angewendet wird.

Grüße

CMБ