c++ schreibt nicht in datei
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
c++ schreibt nicht in datei
Bin grad betriebsblind, Datei wird zwar erzeugt (openfile), jedoch nichts hinein- geschrieben (writerec)
Vielleicht weiß jemand Rat
[np]
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
fstream datei;
int i;
public:
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class(string para_dateiname_string);
~rec_oop_file_class();
void open_file();
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
set_vars("dummy nachname", "dummy vorname", "dummy 123");
} //init_rec
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
init_rec();
debug = 0;
if (debug == 1)
{
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() dateiname_string = " << dateiname_string << endl; //debug
}
recsize = rec.feld_nachname_breite + rec.feld_vorname_breite + rec.feld_telefon_breite;
debug = 0;
if (debug == 1)
{
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() recsize berechnet = " << recsize << endl; //debug
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() recsize manuell wenn gesetzt= " << recsize << endl; //debug
} //debug
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
datei.close();
debug = 0;
if (debug == 1)
{
cout << "Hier ist openfile berechnet = " << recsize << endl; //debug
}
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file()
{
fstream f(dateiname_string, ios::out);
debug = 0;
if (debug == 1)
{
cout << "Hier ist openfile dateiname_string = " <<dateiname_string;
}
} //rec_oop_file_class::open_file()
void rec_oop_file_class::writerec()
{
debug = 1;
if (debug == 1)
{
cout << "Hier ist writerec" << endl; //debug
} //debug
if (datei)
{
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
}
else
{
cout << "Datei ist geschlossen" << endl;
exit(0);
}
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_nachname_string=" << rec.feld_nachname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_nachname_breite=" << rec.feld_nachname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////// main //////////////////////////////////////////////////////
// schon rec_oop_file_class > 6.3.18
int main()
{
rec_oop_file_class f("datei.txt"); //Konstruktor ruft init_rec() öffnet aber nicht die datei
f.open_file();
f.set_vars("Zahlhaas", "Manfred", "6972489");
f.show_vars();
f.writerec();
cout << endl << endl<< endl<< endl<< endl<< endl<< endl;
}
[/np]
Vielleicht weiß jemand Rat
[np]
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
fstream datei;
int i;
public:
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class(string para_dateiname_string);
~rec_oop_file_class();
void open_file();
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
set_vars("dummy nachname", "dummy vorname", "dummy 123");
} //init_rec
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
init_rec();
debug = 0;
if (debug == 1)
{
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() dateiname_string = " << dateiname_string << endl; //debug
}
recsize = rec.feld_nachname_breite + rec.feld_vorname_breite + rec.feld_telefon_breite;
debug = 0;
if (debug == 1)
{
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() recsize berechnet = " << recsize << endl; //debug
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() recsize manuell wenn gesetzt= " << recsize << endl; //debug
} //debug
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
datei.close();
debug = 0;
if (debug == 1)
{
cout << "Hier ist openfile berechnet = " << recsize << endl; //debug
}
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file()
{
fstream f(dateiname_string, ios::out);
debug = 0;
if (debug == 1)
{
cout << "Hier ist openfile dateiname_string = " <<dateiname_string;
}
} //rec_oop_file_class::open_file()
void rec_oop_file_class::writerec()
{
debug = 1;
if (debug == 1)
{
cout << "Hier ist writerec" << endl; //debug
} //debug
if (datei)
{
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
}
else
{
cout << "Datei ist geschlossen" << endl;
exit(0);
}
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_nachname_string=" << rec.feld_nachname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_nachname_breite=" << rec.feld_nachname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////// main //////////////////////////////////////////////////////
// schon rec_oop_file_class > 6.3.18
int main()
{
rec_oop_file_class f("datei.txt"); //Konstruktor ruft init_rec() öffnet aber nicht die datei
f.open_file();
f.set_vars("Zahlhaas", "Manfred", "6972489");
f.show_vars();
f.writerec();
cout << endl << endl<< endl<< endl<< endl<< endl<< endl;
}
[/np]
Es gibt viele Foren und eine Welt ausserhalb
Re: c++ schreibt nicht in datei
Klar: ersetze [np] durch [code], dann kann man es sogar lesen, und jemand, der sich damit auskennt, kann was dazu schreiben. Außerdem: die Tags deuten darauf hin, dass es ebenfalls in ’nem weiteren Forum gepostet wurde – das solltest du verlinken; ungekennzeichnete Cross-Posts gelten als sehr unhöflich.
Re: c++ schreibt nicht in datei
Ja, bitte!niemand hat geschrieben:20.02.2019 18:39:07Klar: ersetze [np] durch [code], dann kann man es sogar lesen
Du öffnest effektiv nie die Datei, in die du schreiben möchtest. In rec_oop_file_class::open_file() wird zwar lokal, temporär ein std::fstream für dateiname_string geöffnet, für die Membervariable rec_oop_file_class::datei passiert das aber nicht.
Ein simpler Lösungsvorschlag:
Code: Alles auswählen
datei = f;
C++-typischer wäre es, die Datei bzw. den std::fstream direkt richtig im Konstruktor zu öffnen, in der Member-Initializer-Liste:
Code: Alles auswählen
rec_oop_file_class::rec_oop_file_class(string para_dateiname_string)
: datei(para_dateiname_string)
{
[…]
}
Manchmal bekannt als Just (another) Terminal Hacker.
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
niemand hat geschrieben:20.02.2019 18:39:07Klar: ersetze [np] durch [code], dann kann man es sogar lesen, und jemand, der sich damit auskennt, kann was dazu schreiben. Außerdem: die Tags deuten darauf hin, dass es ebenfalls in ’nem weiteren Forum gepostet wurde – das solltest du verlinken; ungekennzeichnete Cross-Posts gelten als sehr unhöflich.
Jetzt probier ich code aus, Ergänzend ist zu sagen das der Konstrukter impliziert einen NAMEN fesgelegt openfile() musd explicit aufgerufen werden
[deb]
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
fstream datei;
int i;
public:
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class(string para_dateiname_string);
~rec_oop_file_class();
void open_file();
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
set_vars("dummy nachname", "dummy vorname", "dummy 123");
} //init_rec
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
init_rec();
debug = 0;
if (debug == 1)
{
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() dateiname_string = " << dateiname_string << endl; //debug
}
recsize = rec.feld_nachname_breite + rec.feld_vorname_breite + rec.feld_telefon_breite;
debug = 0;
if (debug == 1)
{
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() recsize berechnet = " << recsize << endl; //debug
cout << "Hier ist KONSTRUKTOR rec_oop_file_class::~rec_oop_file_class() recsize manuell wenn gesetzt= " << recsize << endl; //debug
} //debug
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
datei.close();
debug = 0;
if (debug == 1)
{
cout << "Hier ist openfile berechnet = " << recsize << endl; //debug
}
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file()
{
ofstream f(dateiname_string, ios::out);
debug = 0;
if (debug == 1)
{
cout << "Hier ist openfile dateiname_string = " <<dateiname_string;
}
} //rec_oop_file_class::open_file()
void rec_oop_file_class::writerec()
{
debug = 1;
if (debug == 1)
{
cout << "Hier ist writerec" << endl; //debug
} //debug
if (datei)
{
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
}
else
{
cout << "Datei ist geschlossen" << endl;
exit(0);
}
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_nachname_string=" << rec.feld_nachname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_nachname_breite=" << rec.feld_nachname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////// main //////////////////////////////////////////////////////
// schon rec_oop_file_class > 6.3.18
int main()
{
rec_oop_file_class f("datei.txt"); //Konstruktor ruft init_rec() öffnet aber nicht die datei
f.open_file();
f.set_vars("Zahlhaas", "Manfred", "6972489");
f.show_vars();
f.writerec();
cout << endl << endl<< endl<< endl<< endl<< endl<< endl;
}
[/deb]
Es gibt viele Foren und eine Welt ausserhalb
Re: c++ schreibt nicht in datei
Was bezweckst du damit, den Code in [deb] oder in [np]-Tags zu schreiben, statt in Code-Tags, wodurch er tatsächlich lesbar würde?
Re: c++ schreibt nicht in datei
Hat sich denn dabei noch etwas ergeben?
Dein zweiter Codeschnipsel hat weiter das Problem, dass die Klassenmembervariable datei nie mit einem tatsächlichen Dateinamen „geöffnet“ wird. In rec_oop_file_class::writerec() wirst du damit immer die Ausgabe „Datei ist geschlossen“ bekommen.
Mein erster Lösungsvorschlag oben war übrigens Quatsch, sorry.
Wenn du die Datei tatsächlich erst in der Funktion rec_oop_file_class::open_file() öffnen möchtest, brauchst du dort eine Zeile
Code: Alles auswählen
datei = std::ofstream(dateiname_string);
Code: Alles auswählen
ofstream f(dateiname_string, ios::out);
Der C++-typische Weg wäre wie gesagt, die Datei direkt im Konstruktor zu öffnen, wie oben vorgeschlagen. Du kannst dann trotzdem den Dateinamen noch der Membervariablen dateiname_string zuweisen.
Nebenbei:
Code: Alles auswählen
std::ofstream ofs("/a/b/c");
Code: Alles auswählen
std::fstream fs("/a/b/c", std::ios::out);
Manchmal bekannt als Just (another) Terminal Hacker.
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
So nun habe ich alles mögliche probiert und diesen Thread vergessen.
*sorry*
Werde mit dem aktuellen Program wiederkehren.
*sorry*
Werde mit dem aktuellen Program wiederkehren.
Es gibt viele Foren und eine Welt ausserhalb
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
Das Öffnen der Datei ist nun openfile
Der Konstruktur macht nun nichts mehr (ausser debug-Ausgabe)
Die Datei ist nun vorhanden, korrekt mit dem gewünschten Namen
jedoch ohne Inhalt
Der Konstruktur macht nun nichts mehr (ausser debug-Ausgabe)
Die Datei ist nun vorhanden, korrekt mit dem gewünschten Namen
jedoch ohne Inhalt
Zuletzt geändert von mampfi am 27.03.2019 10:23:40, insgesamt 3-mal geändert.
Es gibt viele Foren und eine Welt ausserhalb
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
<code>
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
int i;
public:
fstream datei;
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class();
~rec_oop_file_class();
void open_file(string para_dateiname_string);
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
dateiname_string="dummy_file.txt";
set_vars("dummy nachname", "dummy vorname", "dummy 123");
} //init_rec
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class()
{ //OPEN
//init_rec();
debug = 1;
if (debug == 1)
{
cout << "Hier ist Konstruktor rec_oop_file_class" << endl; //debug
}
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
debug = 0;
if (debug == 1)
{
cout << "hier ist destruktor";
}
datei.close();
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file(string para_dateiname_string)
{
fstream f;
dateiname_string = para_dateiname_string;
f.open(dateiname_string, ios::out);
if (datei) cout << "datei geöffnet"; else cout << "datei nicht geöffnet";
} //rec_oop_file_class::open_file()
//p1
void rec_oop_file_class::writerec()
{
debug = 0;
if (debug == 1)
{
cout << "writerec() dateiname_string=" << dateiname_string << endl; //debug
} //debug
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// main ////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// schon rec_oop_file_class >25.3.19
int main()
{
rec_oop_file_class f;
//f.set_vars("Zahlhaas", "Manfred", "6972489");
f.open_file("datei.txt");
//f.show_vars();
f.writerec();
cout << endl;
}
</code>
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
int i;
public:
fstream datei;
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class();
~rec_oop_file_class();
void open_file(string para_dateiname_string);
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
dateiname_string="dummy_file.txt";
set_vars("dummy nachname", "dummy vorname", "dummy 123");
} //init_rec
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class()
{ //OPEN
//init_rec();
debug = 1;
if (debug == 1)
{
cout << "Hier ist Konstruktor rec_oop_file_class" << endl; //debug
}
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
debug = 0;
if (debug == 1)
{
cout << "hier ist destruktor";
}
datei.close();
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file(string para_dateiname_string)
{
fstream f;
dateiname_string = para_dateiname_string;
f.open(dateiname_string, ios::out);
if (datei) cout << "datei geöffnet"; else cout << "datei nicht geöffnet";
} //rec_oop_file_class::open_file()
//p1
void rec_oop_file_class::writerec()
{
debug = 0;
if (debug == 1)
{
cout << "writerec() dateiname_string=" << dateiname_string << endl; //debug
} //debug
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// main ////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// schon rec_oop_file_class >25.3.19
int main()
{
rec_oop_file_class f;
//f.set_vars("Zahlhaas", "Manfred", "6972489");
f.open_file("datei.txt");
//f.show_vars();
f.writerec();
cout << endl;
}
</code>
Es gibt viele Foren und eine Welt ausserhalb
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
Datei wird erstellt aber kein Inhalt hineingeschrieben
Es gibt viele Foren und eine Welt ausserhalb
Re: c++ schreibt nicht in datei
@mampfi: hier sinds eckige Klammern, einfach Beitrag editieren (kleiner Stift oben am Kopf es betreffenden Abschnitts) anklicken und < > gegen [ ] tauschen
Re: c++ schreibt nicht in datei
… du gibst dir aber auch echt Mühe, damit möglichst wenige deinen Code lesen möchten, oder? Kann doch nicht so schwer sein, seinen Kram in der Form
[code]
#include …
[…]
[/code]
zu schreiben? Es sei denn, man will’s tatsächlich nicht. Dann frage ich mich aber schon, was der Thread soll?
[code]
#include …
[…]
[/code]
zu schreiben? Es sei denn, man will’s tatsächlich nicht. Dann frage ich mich aber schon, was der Thread soll?
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
Ich hab code und /code probiert tut aber nichtniemand hat geschrieben:23.02.2019 13:45:52Was bezweckst du damit, den Code in [deb] oder in [np]-Tags zu schreiben, statt in Code-Tags, wodurch er tatsächlich lesbar würde?
Es gibt viele Foren und eine Welt ausserhalb
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
mampfi hat geschrieben:27.03.2019 17:23:07Ich hab code und /code probiert tut aber nichtniemand hat geschrieben:23.02.2019 13:45:52Was bezweckst du damit, den Code in [deb] oder in [np]-Tags zu schreiben, statt in Code-Tags, wodurch er tatsächlich lesbar würde?
Weiterer TestCode: Alles auswählen
Anfang Code print Ende Code
Es gibt viele Foren und eine Welt ausserhalb
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
Code: Alles auswählen
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
int i;
public:
fstream datei;
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class();
~rec_oop_file_class();
void open_file(string para_dateiname_string);
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
dateiname_string="dummy_file.txt";
set_vars("dummy nachname", "dummy vorname", "dummy 123");
} //init_rec
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class()
{ //OPEN
//init_rec();
debug = 1;
if (debug == 1)
{
cout << "Hier ist Konstruktor rec_oop_file_class" << endl; //debug
}
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
debug = 0;
if (debug == 1)
{
cout << "hier ist destruktor";
}
datei.close();
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file(string para_dateiname_string)
{
fstream f;
dateiname_string = para_dateiname_string;
f.open(dateiname_string, ios::out);
if (datei) cout << "datei geöffnet"; else cout << "datei nicht geöffnet";
} //rec_oop_file_class::open_file()
//p1
void rec_oop_file_class::writerec()
{
debug = 0;
if (debug == 1)
{
cout << "writerec() dateiname_string=" << dateiname_string << endl; //debug
} //debug
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// main ////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// schon rec_oop_file_class >27.3.19
int main()
{
rec_oop_file_class f;
f.set_vars("Zahlhaas", "Manfred", "6972489");
f.show_vars();
f.open_file("datei.txt");
f.writerec();
cout << endl;
}
Es gibt viele Foren und eine Welt ausserhalb
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
Button </> verwendet
Hoffe, es ist jetzt besser lesbar
Das Programm erzeugt wie gewünscht eine Datei (z.B. "datei.txt"), die keinen Inhalt hat mit der Größe 0
Hoffe, es ist jetzt besser lesbar
Das Programm erzeugt wie gewünscht eine Datei (z.B. "datei.txt"), die keinen Inhalt hat mit der Größe 0
Es gibt viele Foren und eine Welt ausserhalb
Re: c++ schreibt nicht in datei
Ja, so ist das definitiv besser lesbar.
Dein Problem ist allerdings immer noch dasselbe: Du benutzt in deiner Funktion writerec die Klassenvariable datei, den fstream dahinter öffnest du allerdings nie mit einem Dateinamen.
Schritt für Schritt:
In der Funktion writerec benutzt du die Klassenvariable datei, um in eine Datei zu schreiben:
In der Funktion open_file öffnest du allerdings nicht die Datei mit Hilfe der Variable datei, sondern mit einer lokalen Variable f:
Zum Ausprobieren: Innerhalb der Funktion open_file kannst du mit Hilfe von f in deine Datei schreiben:
Damit du die Variable datei zum Schreiben benutzen kannst, musst du die Datei mit der Variablen datei öffnen:
Hinweis am Rande: Deine Telefonnummer musst du uns nicht verraten
Dein Problem ist allerdings immer noch dasselbe: Du benutzt in deiner Funktion writerec die Klassenvariable datei, den fstream dahinter öffnest du allerdings nie mit einem Dateinamen.
Schritt für Schritt:
In der Funktion writerec benutzt du die Klassenvariable datei, um in eine Datei zu schreiben:
Code: Alles auswählen
class rec_oop_file_class
{
[…]
public:
fstream datei;
[…]
};
void rec_oop_file_class::writerec()
{
[…]
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
}
In der Funktion open_file öffnest du allerdings nicht die Datei mit Hilfe der Variable datei, sondern mit einer lokalen Variable f:
Code: Alles auswählen
void rec_oop_file_class::open_file(string para_dateiname_string)
{
/* Du benutzt diese Variable um die Datei zu öffnen. */
fstream f;
dateiname_string = para_dateiname_string;
f.open(dateiname_string, ios::out);
[…]
/* Am Ende der Funktion wird die Variable f wieder „freigegeben“ und die Datei ist
* nirgendwo geöffnet. */
}
Zum Ausprobieren: Innerhalb der Funktion open_file kannst du mit Hilfe von f in deine Datei schreiben:
Code: Alles auswählen
void rec_oop_file_class::open_file(string para_dateiname_string)
{
fstream f;
dateiname_string = para_dateiname_string;
f.open(dateiname_string, ios::out);
f << "Diese Zeile landet in der Datei.\n";
datei << "Diese Zeile landet nirgendwo.\n";
}
Damit du die Variable datei zum Schreiben benutzen kannst, musst du die Datei mit der Variablen datei öffnen:
Code: Alles auswählen
void rec_oop_file_class::open_file(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
datei.open(dateiname_string, ios::out);
datei << "Jetzt landet diese Zeile in deiner Datei.\n";
}
Hinweis am Rande: Deine Telefonnummer musst du uns nicht verraten
Code: Alles auswählen
int main()
{
[…]
f.set_vars("Zahlhaas", "Manfred", "69XXXXX");
[…]
}
Manchmal bekannt als Just (another) Terminal Hacker.
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
Damm wären das die Änderungen, stimmt?
Code: Alles auswählen
void rec_oop_file_class::open_file(string para_dateiname_string)
{
fstream datei;
dateiname_string = para_dateiname_string;
datei.open(dateiname_string, ios::out);
datei << "Jetzt landet diese Zeile in deiner Datei.\n";
}
Es gibt viele Foren und eine Welt ausserhalb
- king-crash
- Beiträge: 741
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: c++ schreibt nicht in datei
Kurz gesagt, nein.
So wie es aussieht fehlt dir das grundlegende Verständnis von C++. Ich empfehle dringend mit Basics anzufangen.
Und spar dir doch bitte die ständigen Leerzeilen. Selten habe ich so etwas lästiges gesehen
wird immer wahr sein, da der c++ Compiler das Objekt mit irgend etwas != 0 angelegt hat.
Was du meintest ist höchstwahrscheinlich:
In deinem letzten Verbesserungsversuch erzeugst du mit "fstream datei;" ein lokales Objekt, das geöffnet und beschrieben wird.
Beim Verlassen der Funktion wird die Datei wieder geschlossen.
Warum das spätere Beschreiben deiner nicht geöffneten Klassenvariablen "datei" keine Exception wirft, da musst du einen C++ Experten fragen.
Was du meintest wäre dann:
Oder um es möglicherweise deutlicher zu machen:
So wie es aussieht fehlt dir das grundlegende Verständnis von C++. Ich empfehle dringend mit Basics anzufangen.
Und spar dir doch bitte die ständigen Leerzeilen. Selten habe ich so etwas lästiges gesehen
Code: Alles auswählen
if(datei)
Was du meintest ist höchstwahrscheinlich:
Code: Alles auswählen
if(datei.is_open())
Beim Verlassen der Funktion wird die Datei wieder geschlossen.
Warum das spätere Beschreiben deiner nicht geöffneten Klassenvariablen "datei" keine Exception wirft, da musst du einen C++ Experten fragen.
Was du meintest wäre dann:
Code: Alles auswählen
void rec_oop_file_class::open_file(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
datei.open(dateiname_string, ios::out);
datei << "Jetzt landet diese Zeile in deiner Datei.\n";
}
Code: Alles auswählen
void rec_oop_file_class::open_file(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
this->datei.open(dateiname_string, ios::out);
this->datei << "Jetzt landet diese Zeile in deiner Datei.\n";
}
-
- Beiträge: 1983
- Registriert: 16.08.2005 18:15:29
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: münchen
Re: c++ schreibt nicht in datei
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
int i;
public:
fstream datei;
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class();
~rec_oop_file_class();
void open_file(string para_dateiname_string);
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
debug = 0;
if (debug == 1)
{
cout << "hier ist destruktor";
}
dateiname_string="dummy_file.txt";
set_vars("dummy nachname", "dummy vorname", "dummy 123");
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
rec_size = feld_nachname_breite + feld_vorname_breite + feld_telefon_string;
} //init_rec
recsize=20+20
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class()
{ //OPEN
init_rec();
debug = 0;
if (debug == 1)
{
cout << "Hier ist Konstruktor rec_oop_file_class" << endl; //debug
}
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
debug = 0;
if (debug == 1)
{
cout << "hier ist destruktor";
}
datei.close();
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
datei.open(dateiname_string, ios::out);
init_rec();
} //rec_oop_file_class::open_file()
//w1
void rec_oop_file_class::writerec()
{debug = 0;
if (debug == 1)
{
cout << "hier ist writerec()";
}
if (datei)
{
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
}
else
cout << "writerec datei nicht offen" << endl;
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 1;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
cout << "Hier ist writerec_nr() position*recsize=" << position*recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_nachname_string=" << rec.feld_nachname_string<< endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// main ////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// schon rec_oop_file_class >27.3.19
int main()
{
rec_oop_file_class f;
f.open_file("datei.txt");
f.set_vars("Zahlhaas", "Manfred", "6972489");
f.writerec();
f.set_vars("Kobold", "Raimund", "681430");
f.writerec();
f.set_vars("Müller", "Peter", "333333");
f.writerec();
f.set_vars("Ertl", "Thomas", "3148851");
f.writerec_nr(1);
}
#include <string>
#include <fstream>
#include <iomanip>
#include "stdio.h"
#include "string.h"
using namespace std;
//#include "/media/daten/prog/c/lib/pascal.hpp"
//#include "/media/daten/prog/c/lib/convert.hpp"
/////////////// Globale Variablen ///////////////
char debug;
struct rectype
{
string feld_nachname_string;
int feld_nachname_breite;
string feld_vorname_string;
int feld_vorname_breite;
string feld_telefon_string;
int feld_telefon_breite;
}; //rec;
/////////////// Ende Globale Variablen ///////////////
class rec_oop_file_class
{
private:
protected:
int i;
public:
fstream datei;
//protected: geht nicht
struct rectype rec;
struct rectype *recpointer;
void init_rec();
rec_oop_file_class();
~rec_oop_file_class();
void open_file(string para_dateiname_string);
void writerec();
void writerec_nr(int position);
int recsize;
void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string);
void show_vars();
string dateiname_string;
}; //rec_oop_file_class
void rec_oop_file_class::init_rec()
{
debug = 0;
if (debug == 1)
{
cout << "hier ist destruktor";
}
dateiname_string="dummy_file.txt";
set_vars("dummy nachname", "dummy vorname", "dummy 123");
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
rec_size = feld_nachname_breite + feld_vorname_breite + feld_telefon_string;
} //init_rec
recsize=20+20
//----- KONSTRUKTOR ---------------------------------------
rec_oop_file_class::rec_oop_file_class()
{ //OPEN
init_rec();
debug = 0;
if (debug == 1)
{
cout << "Hier ist Konstruktor rec_oop_file_class" << endl; //debug
}
} //rec_oop_file_class::rec_oop_file_class
//----- KONSTRUKTOR ENDE ---------------------------------------
//----- DESTRUKTOR ---------------------------------------
rec_oop_file_class::~rec_oop_file_class()
{
debug = 0;
if (debug == 1)
{
cout << "hier ist destruktor";
}
datei.close();
} //rec_oop_file_class
//----- DESTRUKTOR ENDE ----------------------------------
void rec_oop_file_class::open_file(string para_dateiname_string)
{
dateiname_string = para_dateiname_string;
datei.open(dateiname_string, ios::out);
init_rec();
} //rec_oop_file_class::open_file()
//w1
void rec_oop_file_class::writerec()
{debug = 0;
if (debug == 1)
{
cout << "hier ist writerec()";
}
if (datei)
{
datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string;
datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string;
datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string;
}
else
cout << "writerec datei nicht offen" << endl;
} //rec_oop_file_class::writerec
void rec_oop_file_class::writerec_nr(int position)
{
debug = 1;
if (debug == 1)
{
cout << "Hier ist writerec_nr()" << endl; //debug
cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug
cout << "Hier ist writerec_nr() position*recsize=" << position*recsize << endl; //debug
} //debug
datei.seekp(position*recsize);
writerec();
} //rec_oop_file_class_nr
void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string)
{
debug = 0;
if (debug == 1)
{
cout << "Hier ist set_vars" << endl; //debug
} //debug
rec.feld_nachname_string = para_feld_nachname_string;
rec.feld_vorname_string = para_feld_vorname_string;
rec.feld_telefon_string = para_feld_telefon_string;
rec.feld_nachname_breite = 20;
rec.feld_vorname_breite = 20;
rec.feld_telefon_breite = 20;
} //set_var
void rec_oop_file_class::show_vars()
{
cout << "Hier ist show_vars() rec.feld_nachname_string=" << rec.feld_nachname_string<< endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug
cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug
} //show_vars()
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// main ////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// schon rec_oop_file_class >27.3.19
int main()
{
rec_oop_file_class f;
f.open_file("datei.txt");
f.set_vars("Zahlhaas", "Manfred", "6972489");
f.writerec();
f.set_vars("Kobold", "Raimund", "681430");
f.writerec();
f.set_vars("Müller", "Peter", "333333");
f.writerec();
f.set_vars("Ertl", "Thomas", "3148851");
f.writerec_nr(1);
}
Es gibt viele Foren und eine Welt ausserhalb
Re: c++ schreibt nicht in datei
FTFY. Wobei ich mittlerweile eher glaube, du machst’s mit Absicht. Wobei sich mir allerdings der Zweck nicht erschließt – warum macht man sowas?mampfi hat geschrieben:22.05.2019 10:40:55Code: Alles auswählen
#include <iostream> #include <string> #include <fstream> #include <iomanip> #include "stdio.h" #include "string.h" using namespace std; //#include "/media/daten/prog/c/lib/pascal.hpp" //#include "/media/daten/prog/c/lib/convert.hpp" /////////////// Globale Variablen /////////////// char debug; struct rectype { string feld_nachname_string; int feld_nachname_breite; string feld_vorname_string; int feld_vorname_breite; string feld_telefon_string; int feld_telefon_breite; }; //rec; /////////////// Ende Globale Variablen /////////////// class rec_oop_file_class { private: protected: int i; public: fstream datei; //protected: geht nicht struct rectype rec; struct rectype *recpointer; void init_rec(); rec_oop_file_class(); ~rec_oop_file_class(); void open_file(string para_dateiname_string); void writerec(); void writerec_nr(int position); int recsize; void set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string); void show_vars(); string dateiname_string; }; //rec_oop_file_class void rec_oop_file_class::init_rec() { debug = 0; if (debug == 1) { cout << "hier ist destruktor"; } dateiname_string="dummy_file.txt"; set_vars("dummy nachname", "dummy vorname", "dummy 123"); rec.feld_nachname_breite = 20; rec.feld_vorname_breite = 20; rec.feld_telefon_breite = 20; rec_size = feld_nachname_breite + feld_vorname_breite + feld_telefon_string;allerdings } //init_rec recsize=20+20 //----- KONSTRUKTOR --------------------------------------- rec_oop_file_class::rec_oop_file_class() { //OPEN init_rec(); debug = 0; if (debug == 1) { cout << "Hier ist Konstruktor rec_oop_file_class" << endl; //debug } } //rec_oop_file_class::rec_oop_file_class //----- KONSTRUKTOR ENDE --------------------------------------- //----- DESTRUKTOR --------------------------------------- rec_oop_file_class::~rec_oop_file_class() { debug = 0; if (debug == 1) { cout << "hier ist destruktor"; } datei.close(); } //rec_oop_file_class //----- DESTRUKTOR ENDE ---------------------------------- void rec_oop_file_class::open_file(string para_dateiname_string) { dateiname_string = para_dateiname_string; datei.open(dateiname_string, ios::out); init_rec(); } //rec_oop_file_class::open_file() //w1 void rec_oop_file_class::writerec() {debug = 0; if (debug == 1) { cout << "hier ist writerec()"; } if (datei) { datei << left << setw(rec.feld_nachname_breite) << rec.feld_nachname_string; datei << left << setw(rec.feld_vorname_breite) << rec.feld_vorname_string; datei << left << setw(rec.feld_telefon_breite) << rec.feld_telefon_string; } else cout << "writerec datei nicht offen" << endl; } //rec_oop_file_class::writerec void rec_oop_file_class::writerec_nr(int position) { debug = 1; if (debug == 1) { cout << "Hier ist writerec_nr()" << endl; //debug cout << "Hier ist writerec_nr() recsize=" << recsize << endl; //debug cout << "Hier ist writerec_nr() position*recsize=" << position*recsize << endl; //debug } //debug datei.seekp(position*recsize); writerec(); } //rec_oop_file_class_nr void rec_oop_file_class::set_vars(string para_feld_nachname_string, string para_feld_vorname_string, string para_feld_telefon_string) { debug = 0; if (debug == 1) { cout << "Hier ist set_vars" << endl; //debug } //debug rec.feld_nachname_string = para_feld_nachname_string; rec.feld_vorname_string = para_feld_vorname_string; rec.feld_telefon_string = para_feld_telefon_string; rec.feld_nachname_breite = 20; rec.feld_vorname_breite = 20; rec.feld_telefon_breite = 20; } //set_var void rec_oop_file_class::show_vars() { cout << "Hier ist show_vars() rec.feld_nachname_string=" << rec.feld_nachname_string<< endl; //debug cout << "Hier ist show_vars() rec.feld_vorname_string=" << rec.feld_vorname_string << endl; //debug cout << "Hier ist show_vars() rec.feld_vorname_breite=" << rec.feld_vorname_breite << endl; //debug cout << "Hier ist show_vars() rec.feld_telefon_string=" << rec.feld_telefon_string << endl; //debug cout << "Hier ist show_vars() rec.feld_telefon_breite=" << rec.feld_telefon_breite << endl; //debug } //show_vars() //////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////// main //////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////// // schon rec_oop_file_class >27.3.19 int main() { rec_oop_file_class f; f.open_file("datei.txt"); f.set_vars("Zahlhaas", "Manfred", "6972489"); f.writerec(); f.set_vars("Kobold", "Raimund", "681430"); f.writerec(); f.set_vars("Müller", "Peter", "333333"); f.writerec(); f.set_vars("Ertl", "Thomas", "3148851"); f.writerec_nr(1); }