Code: Alles auswählen
//Präprozessor Includes
#include <iostream>
#include <string>
#include <fstream>
// Namespace Verwaltung
using namespace std; //Standartnamespace nutzen
// Globale Variablen
// Aufzählungen(enum)
// Strukturdefinitionen(struct)
// Klassendefinitionen(class)
// Funktionsdeklarationen
void leeren();
// Main Funktion
int main()
{
//Variablen und Klassen definieren
string dateiquelle;
string dateiziel;
ifstream dat_in;
ofstream dat_out;
char zeichen;
cout << "Geben Sie die Quelldatei ein: ";
cin >> dateiquelle;
leeren();
cout << "Geben Sie den Namen der Zieldatei ein: ";
cin >> dateiziel;
leeren();
//Öffnen von Quell- und Zieldatei
dat_in.open(dateiquelle.c_str(),ios_base::in);
dat_out.open(dateiziel.c_str(), ios_base::out);
//Abfragen ob Quelldatei geöffnet werden konnte
if (!dat_in)
{
cerr << "Datei konnte NICHT geöffnet werden!!\n";
return 1;
}
//Abfragen ob Zieldatei erzeugt werden konnte
if (!dat_out)
{
cerr << "Datei konnte NICHT erzeugt werden!!\n";
return 1;
}
//Zeichen für Zeichen kopieren
while (!dat_in.eof())
{
dat_in.get(zeichen);
dat_out << zeichen;
}
//Dateien schließen
dat_in.close();
dat_out.close();
return 0;
}
// Sonstige Funktionen(müssen unter Funtionsdeklarationen eingetragen werden)
//Funktion zum leeren des Puffers von cin
void leeren()
{
cin.clear();
while(cin.get() != '\n')
;
}
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.
Zweite Frage: Beim Öffnen der Dateien
Code: Alles auswählen
dat_in.open(dateiquelle.c_str(),ios_base::in);
Code: Alles auswählen
using namespace std, ios_base;
sowie so
Code: Alles auswählen
using namespace std;
using namespace ios_base;
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?
Hat cin eine Memberfunktion, mit der man die Größe des Puffers überprüfen kann, z. B. per sizeof?
Das war es fürs erste mal
Gruß Bebu