mehrer werte in Datei speicher

avenger2099

Mitglied
bs: w2k;
ms visual c++ v6;
c++;
konsolen anwendung;
Code:
#include<iostream>
#include <ctime>
#include <conio.h>
#include<cstdlib>
#include<string>
#include<windows.h>
#include<string>
#include <fstream> // zum schreien in datein
#include <stdio.h> // zum erstellen von datein
using namespace std;
int num;
int num1;
int num2;
int number;

void datei_schreiben()
{

ofstream dat_aus;

dat_aus.open("words.txt", ios_base::out);

dat_aus << num;
dat_aus << num1;
dat_aus << num2;
dat_aus << endl;




}




void gen()
{
		
		
		num=0;
			num1=0;
			num2=0;
		
			for(int j=0;j<10;j++)
			{
			
			cout << num;
			cout << num1;
			cout << num2;
			cout << endl;
			datei_schreiben();
			num2++;
		    	
			}
		
}

void main()
{
	
	gen();
}

Wie schaffe ich es das alle werte in der Textdatei gespeichert werden und nicht nur der neuste?
 
Was genau möchtest du jetzt? Du solltest deine Variablen erst einmal mit werten belegen, und am Ende des Programms solltest du deine geöffnete Datei auch wieder schließen:

Code:
dat_aus.close();

Gruß
cesupa
 
Hi.

Die Datei wird automatisch geschlossen wenn die Funktion datei_schreiben verlassen wird. Entweder öffnest du die Datei nicht immer in der Funktion selbst sondern vorher und machst sie wieder zu wenn du fertig bist. An die Funktion übergibst du dann immer nur eine Referenz auf den Dateistream. Außerdem ist es besser die Werte die du ausgeben willst als Parameter an die Funktion zu übergeben und nicht global zu definieren.
Code:
void schreibe_datei(ofstream& out, int num1, int num2, int num3) {
...
}
...
  ofstream datei ("xyz.txt");
  while (..) {
    schreibe_datei (datei, 1, 2, 3);
  }
  datei.close ();

Alternativ könntest du die Datei innerhalb der Funktion mit ios::app (app steht für append) aufrufen, so wird die Datei geöffnet und die Daten werden immer am Dateiende angehängt.
Code:
ofstream datei("xyz.txt", ios::open | ios::app);
Gruß
 
deepthroat hat gesagt.:
Hi.

Die Datei wird automatisch geschlossen wenn die Funktion datei_schreiben verlassen wird. Entweder öffnest du die Datei nicht immer in der Funktion selbst sondern vorher und machst sie wieder zu wenn du fertig bist. An die Funktion übergibst du dann immer nur eine Referenz auf den Dateistream. Außerdem ist es besser die Werte die du ausgeben willst als Parameter an die Funktion zu übergeben und nicht global zu definieren.
Code:
void schreibe_datei(ofstream& out, int num1, int num2, int num3) {
...
}
...
  ofstream datei ("xyz.txt");
  while (..) {
    schreibe_datei (datei, 1, 2, 3);
  }
  datei.close ();

Alternativ könntest du die Datei innerhalb der Funktion mit ios::app (app steht für append) aufrufen, so wird die Datei geöffnet und die Daten werden immer am Dateiende angehängt.
Code:
ofstream datei("xyz.txt", ios::open | ios::app);
Gruß

die beiden vorschläge verstehe ich nicht oder ich mache es halt falsch könntetst du mir sagen wie ich das genau machen muss für meine programm und an welchen stellen was steht bzw. aufgerufen wird
 
avenger2099 hat gesagt.:
die beiden vorschläge verstehe ich nicht oder ich mache es halt falsch könntetst du mir sagen wie ich das genau machen muss für meine programm und an welchen stellen was steht bzw. aufgerufen wird

1. Vorschlag:
Code:
void schreibe_datei(ofstream& out, int num1, int num2, int num3) {
  out << num1 << num2 << num3 << endl;
}

void gen()
{
		num=0;
			num1=0;
			num2=0;
	
	ofstream dat_aus ("words.txt");

  if (!dat_aus.is_open()) { cerr << "Fehler"; return ; }

			for(int j=0;j<10;j++)
			{
			
			cout << num << << num1 << num2 << endl;
			datei_schreiben(dat_aus, num, num1, num2);
			num2++;
		    	
			}
  dat_aus.close();
		
}

2. Vorschlag:
Code:
void datei_schreiben()
{

ofstream dat_aus (""words.txt", ios::open | ios::app);

if (!datei.is_open()) { cerr << "Fehler"; return ; }

dat_aus << num;
dat_aus << num1;
dat_aus << num2;
dat_aus << endl;

dat_aus.close();
}

Gruß
 
dies kommt beim 2. vorschlag und denn ersten kann ich auch nicht irgendwie auch nicht komplimieren

error C2039: 'open' : Ist kein Element von 'basic_ios<char,struct std::char_traits<char> >'

haste das mal ausprobiert
 
moin


dies kommt beim 2. vorschlag und denn ersten kann ich auch nicht irgendwie auch nicht komplimieren
Ach, Compiler "komplimieren" jetzt schon....
ios::open gibt es mitlerweile nicht mehr, es heisst jetzt ios_base::

Ach bitte unbedingt mehr auf deine Rechtschreibung, besonders die Groß und Kleinschreibung.


mfg
umbrasaxum
 
Zurück