C++ Text in mehrere Dateien schreiben

Ich bin noch Anfänger und möchte wissen was ich hier verändern muss, damit
der text in mehrere Dateien geschrieben wird. Allerdings möchte ich nur eimal
einen Namen für die datei eingeben. Beispiel: ich gebe Text.txt als Dateiname
ein und das programm soll den text jetzt in Text1.txt, Text2.txt und Text3.txt schreiben.


Code:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
  ofstream dat_aus;
  string dateiname;
  cout << "Geben Sie den Namen der Datei ein: ";
  cin  >> dateiname;
  cout << endl;

  dat_aus.open(dateiname.c_str(), ios_base::out);

  if(!dat_aus)
  {
     cout << "Datei konnte nicht geoeffnet werden!";
     cout << endl;
     return -1;
  }

  // Verschiedene Daten zum Testen in die Datei
  // schreiben
  string text1 = "Dies ist ein Text";
  int    var1  =  1000;
  string text2 = "Dies ist ein weiterer Text";
  double var2  =  555.111;

  dat_aus << text1 << endl;
  dat_aus << var1 << endl;
  dat_aus << text2 << endl;
  dat_aus << var2 << endl;

  dat_aus.close();

  return 0;
}
 
du weißt der variable dateiname doch garkeinen wert zu oder bin ich von der gestrigen abiparty noch angetrunken?^^
 
Original von weau
du weißt der variable dateiname doch garkeinen wert zu oder bin ich von der gestrigen abiparty noch angetrunken?^^
Ich denk mal, du bist noch angetrunken xD
Zeile 11: cin >> dateiname;
Sollte den Kommentar erübrigen. Is ein String eigentlich das Selbe wie eine Variable? Is doch eigentlich ein automatisierter char array oder? Oder ein char vector...? Vector währe einfacher, braucht aber wieder n Include... *grübel*

Back2Topic:
soweit ich weis, kann man das. Hab grad bloß keinen Compiler zur Hand.
also du könntest jetzt noch mit:
Code:
ofstream dat_aus2;
eine zweite Datei öffnen. Weiter dann vlt. so:
als Dateiname gibst du dann bloß "text" oder sowas ein und definierst "dateiname2" noch als String. sieht dann ungefähr so aus:
Code:
string dateiname2;
dateiname2=dateiname;
dateiname = dateiname + "1.txt";
dateiname2= dateiname2 + "2.txt";
 // hier kannst du für 1 und 2 auch Variablen nehmen die immer weiter zählen, in ner schleife oder so... Bin mir grad nich sicher wie das mit der Syntax vereinbar ist, wie gesagt, no compiler :.(
dat_aus.open(dateiname.c_str(), ios_base::out);
dat_aus2.open(dateiname2.c_str(), ios_base::out);
//schreiben geht dann ganz einfach so:
  dat_aus << text1 << endl;
  dat_aus << var1 << endl;
  dat_aus2 << text2 << endl;
  dat_aus2 << var2 << endl;
//schließen ist wohl auch klar:
dat_aus.close();
dat_aus2.close();
Um den String für den Dateinamen zu ändern, kannst du das auch so machen, dass du die Endung manuell angibst, so wie du das erst hattest. Da muss man bloß ein bißchen mit dem String hantieren. Hier siehst du mal n nettes Tut dafür:
http://www.uni-bayreuth.de/departments/math/~rbaier/lectures/c/html/node62.html
 
Zurück
Oben