003
17.11.2005, 10:01 Uhr
0xdeadbeef
Gott (Operator)
|
Der einzige Fehler, der mir so direkt ins Auge springt, ist, dass die ganzen STL-Bezeichner nicht mit std:: gepräfixt wurden und eine using-Direktive, die das überflüssig machen würde, fehlt.
C++: |
using namespace std;
|
unter die Header-includes löst das. Ansonsten,
hat in C++-Code nichts zu suchen, da heißt das
...auch, wenn die meisten C++-Compiler stdio.h kennen, das ist ein C-Header, kein C++-Header. Es ist mindestens schlechter Stil, ihn in C++-Code zu benutzen.
Ansonsten hätte ich den Code wohl eher so geschrieben:
C++: |
#include <fstream> #include <iostream> #include <string>
int main() { std::string zeile; std::ifstream in("input.txt");
while(std::getline(in, zeile)) { for(std::string::size_type i = 0; i < zeile.size(); ++i) { std::cout << i << ": " << zeile[i] << '\n'; } }
std::cin.get(); }
|
...aber das nur am Rande. Der Unterschied ist, dass bei großen Dateien deutlich weniger Speicherverbrauch auftritt, wenn nicht die ganze Datei, sondern jeweils nur eine Zeile gebuffert werden muss. Im Falle von Binärdateien ist das natürlich was anderes, hier empfiehlt es sich, in Blöcken fest definierter Größe (ie 512 Byte) zu lesen. 512 Byte deshalb, weil ein Block auf einer Festplatte typischerweise diese Größe hat. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 17.11.2005 um 10:10 Uhr von 0xdeadbeef editiert. |