Unter Linux sollte es keinen Unterschied machen, aber unter Windows zum Beispiel werden dann automatisch die Zeilenenden konvertiert. Beim Laden wird aus \r\n ein \n und beim Speicher umgekehrt. Wenn es sich also wirklich um Binärdaten handelt und eine Bitfolge zufällig \r oder \n entspricht, dann kann das durchaus unerwünschte Folgen haben.Bebu hat geschrieben:Erste Frage: Kann dieses Programm bedenkenlos jede Art von Dateien kopieren? Ich hab es mal versucht, bin mir aber über das Ergebnis nicht ganz sicher, der erster Eindruck war, dass es geht. Binärdateien bestehen ja eigentlich auch nur aus Zeichen.
Die Frage ist, wozu musst du eigentlich wissen wie viele Zeichen genau im Datenstrom stehen? Bei Streams geht es ja eigentlich darum das zu abstrahieren und es somit möglich machen dass man Tastatur, Dateien und sogar auch Daten aus dem Netzwerk einheitlich zu behandeln. Und außer bei Dateien wäre es auch etwas schwierig herauszufinden wie viele Zeichen noch kommen. Deshalb liest man normalerweise auch nicht eine bestimmte Anzahl von Zeichen, sonder extrahiert verschiedenen Datentypen mit dem Extraktionsoperator (>>) zb:Bebu hat geschrieben:3. Frage: Enthält die Funktion cin eine Feldgrenzenüberwachung? Wenn nicht, wie kann ich die Größe der Daten im Puffer überprüfen, bevor ich sie in eine Variable schreibe?
Code: Alles auswählen
std::ifstream file("zahlen.txt");
int zahl;
file >> zahl;
std::cout << "Zahl ist " << zahl << std::endl;
Im Normalfall brauchst du diese Flags auch gar nicht verwenden, da bei einem Objekt vom Typ ifstream sowieso ios_base::in und bei ofstream ios_base::out die Standardwerte sind. Du kannst die Datei also auch so öffnen:Bebu hat geschrieben:Zweite Frage: Beim Öffnen der Dateienist mir das "ios_base" ein bisschen suspekt.[...]Code: Alles auswählen
dat_in.open(dateiquelle.c_str(),ios_base::in);
Code: Alles auswählen
std::ifstream dat_in(dateiquelle.c_str());