Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Datei zeilenweise auslesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.07.2005, 18:09 Uhr
~Skippy
Gast


ich hätte da mal ein problem:

Datei muss zeilenweise ausgelesen werden und zwar soll es möglich sein der funktion 2 werte zu übermitteln

1.Wert Die erste zeilen nummer die verarbeitet werden soll
2.Wert Die anzahl der auszulesenden Zeilen

und die dann in strings packen zur weiterverarbeitung

und sollte es gehn wäre es schön wenn ich ifstream verwenden könnte

hoffe jemand ne idee weil ich habe bis jetzt nichts in der richtung finden können
ausser mit fseek
was bei mir nicht möglich ist da die zeichenanzahl pro zeile nicht fest ist
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.07.2005, 19:55 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Klingt ein bisschen nach awk... nimm einen std::string, einen std::ifstream, und std::getline, damit kannst Du Dateien Zeile für Zeile auslesen. Wenn die gewünschte Zeile grad gelesen wurde, weiterverarbeiten, sonst nicht...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.07.2005, 19:58 Uhr
Pler
Einer von Vielen
(Operator)


mach einfach in ner schleife lauter gets();
( Ja ich weis das soll man nicht nehmen )
Das Ergebnis schmeisst du solange weg, bis du an der stelle bist, ab der du lesen sollst. Dann liesste noch solange, wie du sollst.
Als Rückgabewert: Ein Zeiger auf das feld, in denen du die Zeilen abgespeichsert hast.
Wenn was schiefgegangen ist gibst du NULL zurück.

Da gets ja zeilenweise arbeitet ist es egal, wie viele Zeichen in der Zeile sind. Brauchst halt nur einen genügend großen Einlesepuffer, dass nichts schief geht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.07.2005, 20:05 Uhr
countless



du könntest nach EOL suchen... also zb "\n", das vorkommen zählen und so weißt du in welcher zeile du dich befindest... hast du die startzeile gefunden liest du solange zeichen bis EOL entsprechend oft aufgetaucht ist... musst halt nur schauen dass du genug speicher für die strings bereitstellst...
da zeichenweises zugreifen auf files net sonderlich effizent ist, kommst du vielleicht besser wenn du größere blöcke einliest und darin das auftauchen von EOL zählst und entsprechend weiterverfährst...
oder du nutzt getline(str, n), was die ganze zeile, bzw. max. n bytes in str schreibt... :-)
alles prima mit ifstream machbar
bye countless

ps: sorry für die wiederholung von bereitsgesagtem... habs zu spät gelesen
--
"I'm here..... yeah,.. I'm here.......... it's not that big of a deal.........
i won't have to return to that shitty world....
this is....... not that bad."
.hack//sign (tsukasa)

Dieser Post wurde am 06.07.2005 um 20:07 Uhr von countless editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.07.2005, 21:42 Uhr
~Skippy
Gast


so um es in weinig genauer zu beschreiben ich programmiere einen webserver und der soll ein gästebuch und ein forum enthalten

was direkt ein programmiert ist und virtuell ins verzeichnissystem des servers eingebunden

standart taucht es unter domain.de/forum bzw domain.de/gaestebuch auf

weiterhin soll als standart ne textdatei für die datensätze beim gästebuch herhalten

deren inhalt so aussieht

30/01/2005 - 20.15|@|USERNAME|@|EMAIL|@|TITEL|@|der Text und bla bal

beim forum sind es 3 dateien eine für den index eine für jede katiegory und für jeden
post in der kategorie ne datei den html formatierten text enthält
---------------------------------------------------------------------------
mein problem ist das es mit dem zeilenweise auslesen eine relativ hohe performance haben müsste daher möchte ich wenns geht nicht jedesmal die ganze textdatei auslesen
und mit dem speicher festlegen für den string ist auch scheiße wollte das eigentlich ohne begrenzung lassen

jedenfalls würde ich gern getline verwenden
aber ich weis net wie ich das hinbekomme erst ab einer bestimmten zeile zu lesen
wo ich dort die schleife unterbringe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.07.2005, 22:17 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <fstream>
#include <string>
#include <vector>

std::vector<std::string> get_lines(std::size_t offset, std::size_t count, std::ifstream &in) {
  std::vector<std::string> lines;
  std::string line;

  while(offset-- && in)
    std::getline(in, line);
  while(count-- && in) {
    std::getline(in, line);
    lines.push_back(line);
  }

  return lines;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.07.2005, 22:40 Uhr
~Skippy
Gast


Oxdeadbeef vielen lieben Dank, dass ist genau was ich gesucht habe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.07.2005, 16:38 Uhr
Skippy



Habe ein kleines problem mit der funktion von oxdeadbeef

ich wollte die in die funktion



void ReadGuestbook() {}

einbauen erhielt aber die fehlermeldung das funtkionsdefinierung nicht erlaubt seien

also denke ich mal ich muss das von der funktion aus aufrufen oder?

und wenn ja wie rufe ich dann den vector auf? habe vectoren bisher noch nie genutzt
oder kenn jemand nen gutes tut zum thema vector (ob in englisch oder auf deutsch ist egal)


2.Frage betrifft ifstream sonst musste man doch immer noch anschließend die datei öffnen

muss ich das hier schon vorher machen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: