Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeilenanzahl von textdatei einlesen

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
19.11.2003, 12:14 Uhr
~revolutz
Gast


Mahlzeit Allerseits !!!

ich will mit ifstream eine Parameterdatei (in Form einer Textdatei) einlesen. Um, je nachdem wie lang die Datei ist, ein dementsprechend großes Array für die Werte anzulegen,

würde ich gern vorher die ZEILENANZAHL DER TEXTDATEI ERMITTELN.

Hat jemand ne Ahnung, wie man das elegant und möglichst einfach machen kann ???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.11.2003, 12:16 Uhr
~revolutz
Gast


Ach ja, kleiner Nachtrag:

bitte nur Lösungen in C++ Syntax.

Danke !!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.11.2003, 12:32 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


der nachteil wenn du es vorher wissen willst ist das du erst die ganze datei einmal durchnudeln musst um zu wissen wieviele zeilen enthalten sind.
am besten eine STL klasse nehmen z.b std:vector<std::string>
und dann den ganzen krempel zeilenweise einlesen.
dann hast du in jedem string eine zeile stehen und weisst auch die zeilenanzahl ohne das du die datei nochmal zum lesen durchrödeln musst
besser ist es allerdings wenn du die informationen zeilenweise abarbeiten könntest weil du ja sonst die komplette datei in dem speicher liest und den damit ganz schön vollmüllst
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.11.2003, 12:37 Uhr
ao

(Operator)


Ja, ich hab eine Ahnung, wie man das machen kann. Elegant ist es leider nicht, weil es m.W. keine Standard-C- oder C++-Möglichkeit gibt, die Anzahl der Zeilen in einer Datei abzufragen ohne sie auszulesen.

Zitat:
~revolutz postete
bitte nur Lösungen in C++ Syntax.


Sonderwünsche kosten extra. Darf ich die Rechnung dann gleich mitschicken?


ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.11.2003, 12:40 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@ao
*lol*
so ne antwort hab ich auch erst überlegt und sie mir dann aber verkniffen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.11.2003, 12:49 Uhr
~revolutz
Gast


Danke erstmal für die schnelle Reaktion!!!

Ich habe jetzt einfach die Einleseroutine zweimal laufen. Einmal um die Zeilenanzahl zu ermitteln und danach nochmal um die Zeilen einzulesen.
Ich dachte ich könnte dann je nach größe der Datei ein Array Initialisieren in der Form:

Double Arrayname[Zeilenzahl];

Das scheint aber nicht zu gehen, da der Speicherplatz für ein Array von vorn herein fest bestimmt werden muß (berichtigt mich, wenn da nicht stimmt).

Es gibt doch sicher noch Alternativmöglichkeiten zu starren Arrays.
Gibt es eine EINFACH (!!!) zu Durchschauende Möglichkeit, arrayartige Gebilde zu schaffen die je nach Bedarf in Form und größe während das Programm läuft angelegt werden können?
Da ich mich mit der ganzen C++ Syntax und dem Verstehen der Funktionsweisen von C++ noch sehr schwer tuhe währe ich für eine einfache Lösung bzw. eine für Anfänger verstänliche Erklärung bzw. Idee sehr dankbar.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.11.2003, 12:58 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wenn du die textdatei vorher selber anlegst kannst weisst du ja schon die zeilenanzahl und könntest in der ersten zeile eine zahl mit dieser information hinterlegen.

das andere mit den "arrayartige Gebilden" die du ansprichst hab ich oben schon geschrieben
nimm einen std::vector. Denn kannst du ansprechen wie ein array und dynamsich vergrössern und verkleinern
ein Beispiel wie das mit dem vector geht findest du z.b. hier
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.11.2003, 13:06 Uhr
ao

(Operator)



Zitat:
~revolutz postete
Es gibt doch sicher noch Alternativmöglichkeiten zu starren Arrays.
Gibt es eine EINFACH (!!!) zu Durchschauende Möglichkeit, arrayartige Gebilde zu schaffen die je nach Bedarf in Form und größe während das Programm läuft angelegt werden können?


Nein, leider nicht. Dynamisches Array-Management ist in C++ nicht mit trivialen Mitteln zu haben. Entweder new / delete oder das bereits von Windalf vorgeschlagene vector-Template.

Ich würde vector nehmen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.11.2003, 14:56 Uhr
~revolutz
Gast


Yo, Danke

Ich hab gerade unter 'new' und 'delate' nachgeschaut, super Tip. Ich denke damit müsste es einfach gehen.

Dann werd ich mein Glück mal probieren.

Gruß,

Revolutz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.11.2003, 16:10 Uhr
0xdeadbeef
Gott
(Operator)



C++:
int zeilenzahl(std::ifstream datei) {
  int i;
  std::string zeile;
  for(i = 0; !datei.eof(); ++i) std::getline(zeile, datei);
  return i;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: