011
10.12.2003, 14:39 Uhr
virtual
Sexiest Bit alive (Operator)
|
Also,
was in diesem Thread wohl schon deutlich wurde: Du mußt irgendwie an die Anzahl der Zeilen kommen. Mit diesem size_t(...) geht es nicht. Ein Standardkonformer weg ist das hier:
| C++: |
#include <iostream> #include <fstream> #include <iterator>
int main() { // Datei öffnen std::ifstream in("a.cpp");
// Beim iterieren kein Leerzeichen überspringen in.unsetf(std::ios::skipws);
// Anzahl der Zeilen zählen unsigned count = std::count(std::istream_iterator<char>(in), std::istream_iterator<char>(), '\n');
// Kontrollausgabe std::cout<<"Die Datei hat "<<count<<" Newlines/Zeilen"<<std::endl;
// An Anfang zurück, flag zurücksetzen in.seekg(0,std::ios::beg); in.setf(std::ios::skipws);
// Nun steht in count die Anzahl der Zeilen, in ist die geöffnete Datei // und man kann loslegen mit dem einlesen
}
|
Da die Datei im textmode geöffnet ist, ist garantiert, daß die Zeilenumbrüche immer den Wert '\n' haben (dh die Mac oder Windows Zeilenumbrüche werden korrekt hieraus gemappt). -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |