string problem (mehrere Wörte einlesen)



  • so sieht mein Programm aus, die Dateiendung ist in der Mitte in der Funktion DATA_FORMATTING_FILE();

    wenn ich das Programm durchlaufen lasse kann ich zwar einen Namen für eine Datei noch angeben aber die Datei selber wird nicht benannt, es wird eine .txt erstellt ohne das ich den Namen angeben kann.

    #include <iostream>		// IN und Output darzustellen
    #include <windows.h>	// Grafik von Zanare
    #include<fstream>		// Zum Öffnen und anschließendem Einlesen von Daten (Dateneingabe)
    #include<string>		// Zum Einlesen von Strings (für die dll)
    #include "stplus.h"		// Einlesen der Stplusheader mit den Funktionsaufrufen für
    						// die stplus.dll Datei. Falls Sie das Programm neu compilieren 
    						// wollen denken Sie daran die Header Datei und die .lib Datei 
    						// von Stplus einzubinden. Diese befinden sich auf der Cd in dem
    						// Ordner stplus dll.
    
    using namespace std;	// Namensbereich zur Verfügnung stellen damit andere Programmierer 
    						// Ohne Probleme Ihre Daten mit diesem Programm kombinieren könnnen.
    
    void DATA_FORMATTING_FILE();	// Deklaration der Funktion Data_Formating_File
    void LINE_EXPENDITURE();		// Deklaration der Funktion Line_EXPENDITURE()
    void stplus();					// Deklaration der Funktion stplus
    
    std::string Dateiname_Ausgabe;
    
    int main(int argc, char* argv[])
    {
    
    	stplus();
    
    	LINE_EXPENDITURE();		// Ausgabeschleife der Werte 
    
    	for (;;)	// Endlosschleife damit die Eingabe der Daten (Zanareaufruf)
    				// X mal wiederholt werden kann oder mit n abgebrochen wird.
    		{	
    			char Input_Sign;
    			cout << "\nWenn Sie Ihre Berechnungen noch einmal aendern wollen\n"; 
    			cout << "geben Sie J (fuer ja) ein, andernfalls N (fuer nein) ein:  ";
    			cin >> Input_Sign;
    				if (Input_Sign == 'j' )
    				{
    					stplus();
    					LINE_EXPENDITURE();
    				}
    				if (Input_Sign == 'n' )
    				{
    					break;
    				}
    		}
    
    	DATA_FORMATTING_FILE();	// Ausgabeschleife für die neue Datei
    
    	cout << "\nUm das Programm zu beenden druecken Sie eine Taste...";
    	getchar();
    
    	return 0;
    }
    
    void stplus()
    {
    	STARTUPINFO si;
    	PROCESS_INFORMATION pi;
    	memset(&si,0,sizeof(STARTUPINFO));
    	si.cb=sizeof(STARTUPINFO);
    
    	// Fenster sichtbar!!!
    	si.dwFlags=STARTF_USESHOWWINDOW;
    	si.wShowWindow=SW_SHOW;		//Hide für verstecktes Fenter, Show für offenes Fenster! 
    	if(!CreateProcess
    		(
    		NULL,
    		"wlz.exe",
    		NULL,
    		NULL,
    		false,
    		NULL,
    		NULL,
    		0,
    		&si,
    		&pi))
    		printf("Fehler bei der Ausführung");
    		WaitForSingleObject(pi.hProcess,INFINITE);
    		CloseHandle(pi.hThread);
    
    	TOGETHER s;
    	 Set(s, 1456);
    
    		//cout << "Wert = " << Get(s) << endl;
    		//cout << "Hallo, das ist ein Test!!!" <<"\n\n";
    }
    
    void DATA_FORMATTING_FILE()
    {
    
    		// Die Datei wl_zanare.txt wird geöffnet
    		std::ifstream Eingabedatei_zanare("ausgabe\\wl_zanare_ausgabe.txt");
    
    		// Meldung das die Datei erfolgreich geöffnet wurde
    	if (Eingabedatei_zanare)
    	{
    	//	cout << "\nDie Eingabedatei wl_zanare_ausgabe wurde erfolgreich gelesen...\n";
    	}
    	// Wenn die Datei wl_zanare.txt nicht geöffnet werden, wird eine Fehler Meldung ausgegeben
    	// und das Programm beendet
    	else
    	{
    		cout << "Die Datei (wl_zanare_3,4x51.txt) kann nicht geoeffnet werden.\n";
    		cout << "Bitte ueberpruefen Sie ob sich die Datei im Ausgabeverzeichnis befindet\n";
    		cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    		getchar();
    		exit(1);
    	}
    
    	// Wenn die Eingabedateizanare erfolgreich gelesen
    	// wurde, wird die Ausgabedatei im Ordner ausgabe erzeugt!
    	// Sie wird vom Benuzter benannt und endet
    	// automatisch mit der Endung .txt
    
    	if(Eingabedatei_zanare)
    	{
    
    		// alt:	Um bei Programmtests nicht jedesmal eine neue
    		//		Ausgabedatei eingeben zu müssen nehmen Sie einfach
    		//		das // std::ofstream Ausgabe_fuer_beide_Programme("ausbabe\\Ausgabetest.txt");
    		//		weg und setzen dafür vor ***std::string Dateiname;***
    		//		ein /* und nach ***std::ofstream Ausgabe_fuer_beide_Pro
    		//		gramme((Dateiname_Ausgabe+".txt").c_str());***
    		//		wieder ein */ zum beenden des Kommentar
    
    		// std::ofstream Ausgabe_fuer_beide_Programme("ausgabe\\Ausgabetest.txt");
    
    		// neu
    		// Um die Ausgabedatei vom Benutzer aus zu bestimmen mit der Endung .txt
    
    		cout << "Bitte geben Sie einen Namen fuer Ihre Ausgabedatei ein:\t";
    		getline(cin,Dateiname_Ausgabe);
    		Dateiname_Ausgabe+=".txt";
    		const char* chr=Dateiname_Ausgabe.c_str();
    		ofstream Ausgabe_fuer_beide_Programme(chr,ios::out);
    
    	//	std::ofstream Ausgabe_fuer_beide_Programme(("ausgabe\\"+Dateiname_Ausgabe+".txt").c_str());
    
    		// Ausgabedatei erfolgreich erstellt
    
    		if(Ausgabe_fuer_beide_Programme)
    		{
    			cout << "Ausgabedatei erfolgreich erstellt.\n";
    		}
    
    		// Wenn die Ausgabedatei nicht erstellt wurde eine Fehlermeldung ausgeben und das Programm beenden
    		else
    		{
    			cout << "Ausgabedatei konnte nicht erstellt werden";
    			cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    			getchar();
    			exit(1);
    		}
    
    		// Jetzt wird der Inhalt der Ausgabedatei definiert
    		// Zuerst muß die Funktion "Ausgabe_fuer_beide_Programme"
    		// aufgerufen werden. Anschließend der Inhalt der in der Ausgabe-
    		// datei stehen soll.
    
    		// Inhalt der Datei Eingabedatei_zanare
    
    		char ch;
    		while (Eingabedatei_zanare.get(ch))
    		{
    			Ausgabe_fuer_beide_Programme << ch;
    
    		}
    
    		Ausgabe_fuer_beide_Programme << "\n\n\n\n\n\n";
    
    		// Schließen der Eingabedatei von Zanare
    		Eingabedatei_zanare.close();
    		// Schließen der Ausgabedatei
    		Ausgabe_fuer_beide_Programme.close();
    	}
    
    	// Die Datei fva_ausgabe.txt wird geöffnet und an das Ende
    	// der Ausgabedatei gehängt
    
    	std::ifstream Eingabedatei_Stplus("ausgabe\\fva_ausgabe.txt");
    	// Wenn die Datei erfolgreich geöffnet wurde
    	if (Eingabedatei_Stplus)
    	{
    	//	cout << "Die Datei (fva_ausgabe.txt) wurde erfolgreich gelesen.\n";
    	}
    	// Wenn die Datei fva_ausgabe.txt nicht geöffnet werden, wird eine Fehler Meldung ausgegeben
    	else
    	{
    		cout << "Die Datei (fva_ausgabe.txt) kann nicht geoeffnet werden.\n";
    		cout << "Bitte ueberpruefen Sie ob sich die Datei im Ausgabeverzeichnis befindet\n";
    		cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    		getchar();
    		exit(1);
    	}
    
    	// cout << " Die Dateiausgabe fuer beide Programme wird im Anhängemodus geöffnet";
    
    	std::ofstream Ausgabe_fuer_beide_Programme(("ausgabe\\"+Dateiname_Ausgabe+".txt").c_str(),ios_base::app);
    	if (!Ausgabe_fuer_beide_Programme)
    	{
    		cout << "Es ist nicht möglich die Ausgabedatei für beide Programme zu öffnen";
    	}
    
    		char ch;
    		while (Eingabedatei_Stplus.get(ch))
    		Ausgabe_fuer_beide_Programme << ch;
    		getchar();
    }
    
    void LINE_EXPENDITURE()
    {	
    
    	// Falls Sie noch zusätzliche Zeilen aus fva_ausgabe.txt ausgeben wollen,
    	// müssen Sie wie folgt Verfahren
    	// 1.) Zeilen initialisieren
    	// 2.) Einen buffer Character Typ forgeben
    	// 3.) Eine weitere if Schleife zum Lesen der ganzen Zeile erstellen
    	// 4.) Die gewünschte Zeile ausgeben
    
    	// 1.)	Einfach eine weitere Zeile initialisieren über 
    	//		int zeileX = 343
    	//		Die 343 steht für die Zeile 343 in der Datei fva_ausgabe.txt
    
    	int zeile1 = 469;
    	int zeile2 = 504;
    	int maxzeilen = zeile2+1;
    
    	// 2.)	Einfach einen weitern bufferX zum Speicherplatz Deklarieren festlegen
    	//		char bufferX[100]
    	//		Die 100 steht für die Anzahl der ausgegebenen Zeichen in dieser Zeile
    	char dummy[100];
    	char buffer1[100];
    	char buffer2[100];
    
    	// Öffnen der fva_ausgabe um aus Ihr die Textzeilen zu Lesen
    	ifstream datei("ausgabe\\fva_ausgabe.txt");
    
    	// Falls die Datei nicht geöffnet werden kann Fehlermeldung ausgeben
    	if(!datei)
    	{
    		cout << "Die Datei fva_ausgabe konnte nicht gelesen werden...\n";
    		cout << "Ueberpruefen Sie ob sich die Datei im Verzeichnis Ausgabe befindet...\n";
    		cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    		getchar();
    		exit(1);
    	}
    
    	for(int i =0; i<maxzeilen; i++)
    	{
    
    		// 3.)	einfach eine weitere if Zeile mit {...} 
    		//		vor datei.getline schreiben.
    		if( i == (zeile1 -1))
    		{
    			datei.getline(buffer1,100, '\n');
    			continue;
    		}
    
    		if( i == (zeile2 -1))
    		{
    			datei.getline(buffer2,100, '\n');
    			continue;
    
    		}
    
    		datei.getline(dummy, 100);
    	}
    	// 4.)	cout steht zur Ausgabe auf dem Bildschirm,
    	//		um eine weiter Ausgabe auf dem Bildschirm 
    	//		zu erstellen geben Sie einfach
    	//		cout << buffer X << endl; 
    	//		ein, endl oder \n steht für neue Zeile beginnen.
    	//		Um eine Ausgabe in einer Datei zu erstellen öffnen 
    	//		Sie einfach die gewünschte Datei und schreiben anstatt
    	//		cout den filestream.
    	cout << endl << buffer1 << "\n";
    	cout << buffer2 << endl;
    }
    


  • ich sags noch einmal, nimm codetags!
    Eher schau ich mir das nich an....

    und wenn du void vor deine function schreibst geht es!



  • habe ich probiert, wie funktioniert das mit den codetags? einfach vor und nachher drauf klicken?!

    wenn ich void vor meine funktion DATA_FORMATTING_FILE()
    schreibe...kann ich im Programm nix eingeben, als wenn die schleife überhaupt nicht durch laufen wird.
    entschuldige ich bin echt nicht so fit!



  • Was ist jetzt das Problem?
    Das er nicht einliest oder das er nicht schreibt?
    Ich blick langsam nichtmehr durch.



  • the_alien schrieb:

    Was ist jetzt das Problem?
    Das er nicht einliest oder das er nicht schreibt?
    Ich blick langsam nichtmehr durch.

    ich auch nicht

    code tags:
    (cpp)
    code
    [/cpp]

    die runden klammern oben bitte durch eckige ersetzen!



  • das ich die datei nicht benennen kann...

    als ausgabe datei habe ich immer nur
    .txt
    und keinen namen davor...so wie ich es eigentlich vor hatte.
    z.b.: meine datei.txt



  • ich habe den Eindurck als wenn die Zeile
    getline(cin,Dateiname_Ausgabe);
    die werte nicht übergibt. Kann es sein das da irgendwas mit der Klammersetzung oder dem Öffnen und schließen von Datein nicht paßt?



  • code in codetags, und ich schaus mir an, und helfe!



  • ok ich probiere es...danke euch obwohl ihr mittlerweile verzweifelt...

    #include <iostream>		// IN und Output darzustellen
    #include <windows.h>	// Grafik von Zanare
    #include<fstream>		// Zum Öffnen und anschließendem Einlesen von Daten (Dateneingabe)
    #include<string>		// Zum Einlesen von Strings (für die dll)
    #include "stplus.h"		// Einlesen der Stplusheader mit den Funktionsaufrufen für
    						// die stplus.dll Datei. Falls Sie das Programm neu compilieren 
    						// wollen denken Sie daran die Header Datei und die .lib Datei 
    						// von Stplus einzubinden. Diese befinden sich auf der Cd in dem
    						// Ordner stplus dll.
    
    using namespace std;	// Namensbereich zur Verfügnung stellen damit andere Programmierer 
    						// Ohne Probleme Ihre Daten mit diesem Programm kombinieren könnnen.
    
    void DATA_FORMATTING_FILE();	// Deklaration der Funktion Data_Formating_File
    void LINE_EXPENDITURE();		// Deklaration der Funktion Line_EXPENDITURE()
    void stplus();					// Deklaration der Funktion stplus
    
    std::string Dateiname_Ausgabe;
    
    int main(int argc, char* argv[])
    {
    
    	stplus();
    
    	LINE_EXPENDITURE();		// Ausgabeschleife der Werte 
    
    	for (;;)	// Endlosschleife damit die Eingabe der Daten (Zanareaufruf)
    				// X mal wiederholt werden kann oder mit n abgebrochen wird.
    		{	
    			char Input_Sign;
    			cout << "\nWenn Sie Ihre Berechnungen noch einmal aendern wollen\n"; 
    			cout << "geben Sie J (fuer ja) ein, andernfalls N (fuer nein) ein:  ";
    			cin >> Input_Sign;
    				if (Input_Sign == 'j' )
    				{
    					stplus();
    					LINE_EXPENDITURE();
    				}
    				if (Input_Sign == 'n' )
    				{
    					break;
    				}
    		}
    
    	DATA_FORMATTING_FILE();	// Ausgabeschleife für die neue Datei
    
    	cout << "\nUm das Programm zu beenden druecken Sie eine Taste...";
    	getchar();
    
    	return 0;
    }
    
    void stplus()
    {
    	STARTUPINFO si;
    	PROCESS_INFORMATION pi;
    	memset(&si,0,sizeof(STARTUPINFO));
    	si.cb=sizeof(STARTUPINFO);
    
    	// Fenster sichtbar!!!
    	si.dwFlags=STARTF_USESHOWWINDOW;
    	si.wShowWindow=SW_SHOW;		//Hide für verstecktes Fenter, Show für offenes Fenster! 
    	if(!CreateProcess
    		(
    		NULL,
    		"wlz.exe",
    		NULL,
    		NULL,
    		false,
    		NULL,
    		NULL,
    		0,
    		&si,
    		&pi))
    		printf("Fehler bei der Ausführung");
    		WaitForSingleObject(pi.hProcess,INFINITE);
    		CloseHandle(pi.hThread);
    
    	TOGETHER s;
    	 Set(s, 1456);
    
    		//cout << "Wert = " << Get(s) << endl;
    		//cout << "Hallo, das ist ein Test!!!" <<"\n\n";
    }
    
    void DATA_FORMATTING_FILE()
    {
    
    		// Die Datei wl_zanare.txt wird geöffnet
    		std::ifstream Eingabedatei_zanare("ausgabe\\wl_zanare_ausgabe.txt");
    
    		// Meldung das die Datei erfolgreich geöffnet wurde
    	if (Eingabedatei_zanare)
    	{
    	//	cout << "\nDie Eingabedatei wl_zanare_ausgabe wurde erfolgreich gelesen...\n";
    	}
    	// Wenn die Datei wl_zanare.txt nicht geöffnet werden, wird eine Fehler Meldung ausgegeben
    	// und das Programm beendet
    	else
    	{
    		cout << "Die Datei (wl_zanare_3,4x51.txt) kann nicht geoeffnet werden.\n";
    		cout << "Bitte ueberpruefen Sie ob sich die Datei im Ausgabeverzeichnis befindet\n";
    		cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    		getchar();
    		exit(1);
    	}
    
    	// Wenn die Eingabedateizanare erfolgreich gelesen
    	// wurde, wird die Ausgabedatei im Ordner ausgabe erzeugt!
    	// Sie wird vom Benuzter benannt und endet
    	// automatisch mit der Endung .txt
    
    	if(Eingabedatei_zanare)
    	{
    
    		// alt:	Um bei Programmtests nicht jedesmal eine neue
    		//		Ausgabedatei eingeben zu müssen nehmen Sie einfach
    		//		das // std::ofstream Ausgabe_fuer_beide_Programme("ausbabe\\Ausgabetest.txt");
    		//		weg und setzen dafür vor ***std::string Dateiname;***
    		//		ein /* und nach ***std::ofstream Ausgabe_fuer_beide_Pro
    		//		gramme((Dateiname_Ausgabe+".txt").c_str());***
    		//		wieder ein */ zum beenden des Kommentar
    
    		// std::ofstream Ausgabe_fuer_beide_Programme("ausgabe\\Ausgabetest.txt");
    
    		// neu
    		// Um die Ausgabedatei vom Benutzer aus zu bestimmen mit der Endung .txt
    
    		cout << "Bitte geben Sie einen Namen fuer Ihre Ausgabedatei ein:\t";
    		getline(cin,Dateiname_Ausgabe);
    		Dateiname_Ausgabe+=".txt";
    		const char* chr=Dateiname_Ausgabe.c_str();
    		ofstream Ausgabe_fuer_beide_Programme(chr,ios::out);
    
    	//	std::ofstream Ausgabe_fuer_beide_Programme(("ausgabe\\"+Dateiname_Ausgabe+".txt").c_str());
    
    		// Ausgabedatei erfolgreich erstellt
    
    		if(Ausgabe_fuer_beide_Programme)
    		{
    			cout << "Ausgabedatei erfolgreich erstellt.\n";
    		}
    
    		// Wenn die Ausgabedatei nicht erstellt wurde eine Fehlermeldung ausgeben und das Programm beenden
    		else
    		{
    			cout << "Ausgabedatei konnte nicht erstellt werden";
    			cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    			getchar();
    			exit(1);
    		}
    
    		// Jetzt wird der Inhalt der Ausgabedatei definiert
    		// Zuerst muß die Funktion "Ausgabe_fuer_beide_Programme"
    		// aufgerufen werden. Anschließend der Inhalt der in der Ausgabe-
    		// datei stehen soll.
    
    		// Inhalt der Datei Eingabedatei_zanare
    
    		char ch;
    		while (Eingabedatei_zanare.get(ch))
    		{
    			Ausgabe_fuer_beide_Programme << ch;
    
    		}
    
    		Ausgabe_fuer_beide_Programme << "\n\n\n\n\n\n";
    
    		// Schließen der Eingabedatei von Zanare
    		Eingabedatei_zanare.close();
    		// Schließen der Ausgabedatei
    		Ausgabe_fuer_beide_Programme.close();
    	}
    
    	// Die Datei fva_ausgabe.txt wird geöffnet und an das Ende
    	// der Ausgabedatei gehängt
    
    	std::ifstream Eingabedatei_Stplus("ausgabe\\fva_ausgabe.txt");
    	// Wenn die Datei erfolgreich geöffnet wurde
    	if (Eingabedatei_Stplus)
    	{
    	//	cout << "Die Datei (fva_ausgabe.txt) wurde erfolgreich gelesen.\n";
    	}
    	// Wenn die Datei fva_ausgabe.txt nicht geöffnet werden, wird eine Fehler Meldung ausgegeben
    	else
    	{
    		cout << "Die Datei (fva_ausgabe.txt) kann nicht geoeffnet werden.\n";
    		cout << "Bitte ueberpruefen Sie ob sich die Datei im Ausgabeverzeichnis befindet\n";
    		cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    		getchar();
    		exit(1);
    	}
    
    	// cout << " Die Dateiausgabe fuer beide Programme wird im Anhängemodus geöffnet";
    
    	std::ofstream Ausgabe_fuer_beide_Programme(("ausgabe\\"+Dateiname_Ausgabe+".txt").c_str(),ios_base::app);
    	if (!Ausgabe_fuer_beide_Programme)
    	{
    		cout << "Es ist nicht möglich die Ausgabedatei für beide Programme zu öffnen";
    	}
    
    		char ch;
    		while (Eingabedatei_Stplus.get(ch))
    		Ausgabe_fuer_beide_Programme << ch;
    		getchar();
    }
    
    void LINE_EXPENDITURE()
    {	
    
    	// Falls Sie noch zusätzliche Zeilen aus fva_ausgabe.txt ausgeben wollen,
    	// müssen Sie wie folgt Verfahren
    	// 1.) Zeilen initialisieren
    	// 2.) Einen buffer Character Typ forgeben
    	// 3.) Eine weitere if Schleife zum Lesen der ganzen Zeile erstellen
    	// 4.) Die gewünschte Zeile ausgeben
    
    	// 1.)	Einfach eine weitere Zeile initialisieren über 
    	//		int zeileX = 343
    	//		Die 343 steht für die Zeile 343 in der Datei fva_ausgabe.txt
    
    	int zeile1 = 469;
    	int zeile2 = 504;
    	int maxzeilen = zeile2+1;
    
    	// 2.)	Einfach einen weitern bufferX zum Speicherplatz Deklarieren festlegen
    	//		char bufferX[100]
    	//		Die 100 steht für die Anzahl der ausgegebenen Zeichen in dieser Zeile
    	char dummy[100];
    	char buffer1[100];
    	char buffer2[100];
    
    	// Öffnen der fva_ausgabe um aus Ihr die Textzeilen zu Lesen
    	ifstream datei("ausgabe\\fva_ausgabe.txt");
    
    	// Falls die Datei nicht geöffnet werden kann Fehlermeldung ausgeben
    	if(!datei)
    	{
    		cout << "Die Datei fva_ausgabe konnte nicht gelesen werden...\n";
    		cout << "Ueberpruefen Sie ob sich die Datei im Verzeichnis Ausgabe befindet...\n";
    		cout << "Das Programm wird beendet. Bitte druecken Sie eine Taste.";
    		getchar();
    		exit(1);
    	}
    
    	for(int i =0; i<maxzeilen; i++)
    	{
    
    		// 3.)	einfach eine weitere if Zeile mit {...} 
    		//		vor datei.getline schreiben.
    		if( i == (zeile1 -1))
    		{
    			datei.getline(buffer1,100, '\n');
    			continue;
    		}
    
    		if( i == (zeile2 -1))
    		{
    			datei.getline(buffer2,100, '\n');
    			continue;
    
    		}
    
    		datei.getline(dummy, 100);
    	}
    	// 4.)	cout steht zur Ausgabe auf dem Bildschirm,
    	//		um eine weiter Ausgabe auf dem Bildschirm 
    	//		zu erstellen geben Sie einfach
    	//		cout << buffer X << endl; 
    	//		ein, endl oder \n steht für neue Zeile beginnen.
    	//		Um eine Ausgabe in einer Datei zu erstellen öffnen 
    	//		Sie einfach die gewünschte Datei und schreiben anstatt
    	//		cout den filestream.
    	cout << endl << buffer1 << "\n";
    	cout << buffer2 << endl;
    }
    


  • Dateiname_Ausgabe+=".txt";
    ofstream Ausgabe_fuer_beide_Programme(Dateiname_Ausgabe.c_str(),ios::out);
    

    Und so gehts nicht?

    BTW:
    Normalerweise nutzt man entweder einen Unterstrich zur Trennung der Wörter
    ausgabe_fuer_beide_programme
    oder man schreibt den ersten Buchstaben des neuen Wortes groß
    AusgabeFuerBeideProgramme

    Das ist besser lesbar.

    Ohne die vielen Leerzeilen wäre der Code auch besser lesbar.



  • nee, das klappt nicht.
    bekomme wieder nur meine .txt ohne den Namen den ich vorher eingegeben habe.



  • using namespace std;
    int main(int argc, char* argv[])
    {
    	string Dateiname_Ausgabe;
    	cout << "Bitte geben Sie einen Namen fuer Ihre Ausgabedatei ein:\t";
        getline(cin,Dateiname_Ausgabe);
        Dateiname_Ausgabe+=".txt";
        const char* chr=Dateiname_Ausgabe.c_str();
        //ofstream Ausgabe_fuer_beide_Programme(chr,ios::out); 
    	cout << chr;
    	system("pause");
    	return 0;
    }
    

    Keine Ahnung was du machst, aber bei mir gehts ohne Probleme.



  • Wenn ich das so eingebe klappt es bei mir auch, nur in meinem Programm leider nicht.

    Vorher sah der Quelltext so aus

    cout << "Bitte geben Sie einen Namen fuer Ihre Ausgabedatei ein:\t";
    cin >> Dateiname_Ausgabe;
    std::Ausgabe_fuer_beide_Programme(("ausgabe\\"+Dateiname_Ausgabe+".txt").c_str())
    

    Wenn ich ein Wort eingegeben habe wurde die Datei so benannt.

    jetzt habe ich es so geändert wie Ihr es mir vorgeschlagen habt

    cout << "Bitte geben Sie einen Namen fuer Ihre Ausgabedatei ein:\t";
            getline(cin,Dateiname_Ausgabe);
    std::ofstream Ausgabe_fuer_beide_Programme(("ausgabe\\"+Dateiname_Ausgabe+".txt").c_str())
    

    Die Datei wird zwar immer noch erstellt, im Programm gibt es auch eine Abfrage wie meine Datei heißen soll aber benannt wird Sie nicht. 😕



  • Der Quelltext, der da steht FUNKTIONIERT BEI MIR...
    Was soll ich machen? Rätsel raten? Entweder ist das nicht dein derzeitiger Code oder ... keine Ahnung.

    Ich habs übrigens auch mit dem VC 6 kompiliert.



  • welche header bindest du denn ein?

    vielleicht habe ich da was falsch gemacht?

    vielen dank nochmal



  • kann jemand mal hinter getline(cin,Dateiausgabe);
    cout << Dateiausgabe;
    getchar();
    eingeben.

    wenn ich direkt aus dem VC 6.0 starte ist alles ok.

    aber wenn ich die .exe starte wird Dateiausgabe nicht ausgegeben.


Anmelden zum Antworten