<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Erste Klasse erkennt Filefunktionen nicht]]></title><description><![CDATA[<p>Hallo,<br />
ich habe mir, nachdem ich ja so kreativlos war leider eine Idee &quot;geklaut&quot; was ich machen könnte und habe meine erste Klasse in C++ programmiert.</p>
<p>Wie zu erwarten war funktioniert sie nicht.:D<br />
Zur Klasse: Es soll ein FileHandler sein mit dem man Datein schreiben, lesen und löschen kann.</p>
<p>Das ist mein Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;cstdlib&gt; 
using namespace std;

//Klasse definieren

class FileHandler {

	private:
	//Variablen
	string DateiName;
	string path;
	string Text;
	char zeichen;

	public:	
	//Methoden
	void NewData(); //Neue Datei anlegen
	void DeleteData(); //Datei löschen
	void ShowData(); //Dateiinhalt auslesen
};

void FileHandler::NewData() { //Methode um neue Dateien erstellen zu können

	ofstream data; //Instanz der Fileklasse erstellen	

	cout &lt;&lt; &quot;Bitte geben Sie den Dateinamen ein, die die Datei haben soll&quot; &lt;&lt; endl;
	cin &gt;&gt; DateiName;
	cout &lt;&lt; &quot;Bitte geben Sie den Pfad zu Datei im Format C:\\Pfad\\&quot; &lt;&lt; endl;
	cin &gt;&gt; path;

	data.open(path+DateiName.c_str(), ios_base::out);
	if(!data) {

		cout &lt;&lt; &quot;Die Datei konnte nicht erfolgreich geöffnet werden!&quot; &lt;&lt; endl;

	}

	cout &lt;&lt; &quot;Bitte geben Sie nun den Text ein!&quot; &lt;&lt; endl;
	cin &gt;&gt; Text;

	data &lt;&lt; Text &lt;&lt; endl;

	data.close(); //Datei schliessen
}

void FileHandler::DeleteData() { //Methode um Datei zu löschen

	cout &lt;&lt; &quot;Bitte geben Sie den Dateinamen ein (Bitte beachten Sie, dass die Datei gelöscht wird und somit nicht wieder zuverwenden ist!)&quot; &lt;&lt; endl;
	cin &gt;&gt; DateiName;
	cout &lt;&lt; &quot;Bitte geben Sie den Pfad zur Datei im Format C:\\Pfad\\ an&quot; &lt;&lt; endl;
	cin &gt;&gt; path;

	remove(path+DateiName.c_str());

	cout &lt;&lt; &quot;Die Datei konnte erfolgreich gelöscht werden!&quot; &lt;&lt; endl;
}

void FileHandler::ShowData() {

	cout &lt;&lt; &quot;Bitte geben Sie den Dateinamen ein&quot; &lt;&lt; endl;
	cin &gt;&gt; DateiName;
	cout &lt;&lt; &quot;Bitte geben Sie den Pfad zur Datei im Format C:\\Pfad\\ an&quot; &lt;&lt; endl;
	cin &gt;&gt; path;

	ifstream data2; //Instanz der Fileklasse erstellen

	data2.open(path+DateiName.c_str(), ios_base::in);

	if(!data2) {

		cout &lt;&lt; &quot;Die Datei konnte nicht erfolgreich geöffnet werden!&quot; &lt;&lt; endl;
	}

	while(!data2.eof()) {

		data2.get(zeichen);
		cout &lt;&lt; zeichen;
	}

	data2.close(); //Datei schließen
}

//Mainfunktion mit Menü
int main() {

	FileHandler FIHA; //Innstanz von der Klasse FileHandler erstellen

	int auswahl; //Userwahl

	while(auswahl != 0) {

		cout &lt;&lt; &quot;Bitte wählen Sie aus folgenden Funktionen aus:&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Neue Textdatei mit Inhalt erstellen (1)&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Datei löschen (2)&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Datei auslesen (3)&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Programm beenden (4)&quot; &lt;&lt; endl;

		//Menüverarbeitung
		switch(auswahl) {

			case 1:
				FIHA.NewData();
			break;

			case 2:
				FIHA.DeleteData();
			break;

			case 3:
				FIHA.ShowData();
			break;

			case 4:
				return 0;
			break;

			default:
				cout &lt;&lt; &quot;Ihre Eingabe war falsch!\a&quot; &lt;&lt; endl;
				return 0;
			break;
		}
	}
}
</code></pre>
<p>Und das sagt mir mein Compiler:</p>
<blockquote>
<p>manu@manu-desktop:~$ g++ filehandler.cpp -o filehandler<br />
filehandler.cpp:130:7: warning: no newline at end of file<br />
filehandler.cpp: In member function »void FileHandler::NewData()«:<br />
filehandler.cpp:35: Fehler: keine passende Funktion für Aufruf von »std::basic_ofstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, const std::_Ios_Openmode&amp;)«<br />
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/fstream:626: Anmerkung: Kandidaten sind: void std::basic_ofstream&lt;_CharT, _Traits&gt;::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]<br />
filehandler.cpp: In member function »void FileHandler::DeleteData()«:<br />
filehandler.cpp:57: Fehler: keine passende Funktion für Aufruf von »remove(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)«<br />
/usr/include/stdio.h:152: Anmerkung: Kandidaten sind: int remove(const char*)<br />
filehandler.cpp: In member function »void FileHandler::ShowData()«:<br />
filehandler.cpp:71: Fehler: keine passende Funktion für Aufruf von »std::basic_ifstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, const std::_Ios_Openmode&amp;)«<br />
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/fstream:495: Anmerkung: Kandidaten sind: void std::basic_ifstream&lt;_CharT, _Traits&gt;::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]</p>
</blockquote>
<p>Leider verstehe ich nicht, was ich falsch gemacht habe, da ich noch nicht so der Profi bin.</p>
<p>Ich hoffe ihr könnt mir ein paar Tips geben!<br />
Vielen Dank schonmal!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191267/erste-klasse-erkennt-filefunktionen-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 23:10:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191267.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Aug 2007 20:41:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erste Klasse erkennt Filefunktionen nicht on Fri, 31 Aug 2007 20:41:23 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe mir, nachdem ich ja so kreativlos war leider eine Idee &quot;geklaut&quot; was ich machen könnte und habe meine erste Klasse in C++ programmiert.</p>
<p>Wie zu erwarten war funktioniert sie nicht.:D<br />
Zur Klasse: Es soll ein FileHandler sein mit dem man Datein schreiben, lesen und löschen kann.</p>
<p>Das ist mein Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;cstdlib&gt; 
using namespace std;

//Klasse definieren

class FileHandler {

	private:
	//Variablen
	string DateiName;
	string path;
	string Text;
	char zeichen;

	public:	
	//Methoden
	void NewData(); //Neue Datei anlegen
	void DeleteData(); //Datei löschen
	void ShowData(); //Dateiinhalt auslesen
};

void FileHandler::NewData() { //Methode um neue Dateien erstellen zu können

	ofstream data; //Instanz der Fileklasse erstellen	

	cout &lt;&lt; &quot;Bitte geben Sie den Dateinamen ein, die die Datei haben soll&quot; &lt;&lt; endl;
	cin &gt;&gt; DateiName;
	cout &lt;&lt; &quot;Bitte geben Sie den Pfad zu Datei im Format C:\\Pfad\\&quot; &lt;&lt; endl;
	cin &gt;&gt; path;

	data.open(path+DateiName.c_str(), ios_base::out);
	if(!data) {

		cout &lt;&lt; &quot;Die Datei konnte nicht erfolgreich geöffnet werden!&quot; &lt;&lt; endl;

	}

	cout &lt;&lt; &quot;Bitte geben Sie nun den Text ein!&quot; &lt;&lt; endl;
	cin &gt;&gt; Text;

	data &lt;&lt; Text &lt;&lt; endl;

	data.close(); //Datei schliessen
}

void FileHandler::DeleteData() { //Methode um Datei zu löschen

	cout &lt;&lt; &quot;Bitte geben Sie den Dateinamen ein (Bitte beachten Sie, dass die Datei gelöscht wird und somit nicht wieder zuverwenden ist!)&quot; &lt;&lt; endl;
	cin &gt;&gt; DateiName;
	cout &lt;&lt; &quot;Bitte geben Sie den Pfad zur Datei im Format C:\\Pfad\\ an&quot; &lt;&lt; endl;
	cin &gt;&gt; path;

	remove(path+DateiName.c_str());

	cout &lt;&lt; &quot;Die Datei konnte erfolgreich gelöscht werden!&quot; &lt;&lt; endl;
}

void FileHandler::ShowData() {

	cout &lt;&lt; &quot;Bitte geben Sie den Dateinamen ein&quot; &lt;&lt; endl;
	cin &gt;&gt; DateiName;
	cout &lt;&lt; &quot;Bitte geben Sie den Pfad zur Datei im Format C:\\Pfad\\ an&quot; &lt;&lt; endl;
	cin &gt;&gt; path;

	ifstream data2; //Instanz der Fileklasse erstellen

	data2.open(path+DateiName.c_str(), ios_base::in);

	if(!data2) {

		cout &lt;&lt; &quot;Die Datei konnte nicht erfolgreich geöffnet werden!&quot; &lt;&lt; endl;
	}

	while(!data2.eof()) {

		data2.get(zeichen);
		cout &lt;&lt; zeichen;
	}

	data2.close(); //Datei schließen
}

//Mainfunktion mit Menü
int main() {

	FileHandler FIHA; //Innstanz von der Klasse FileHandler erstellen

	int auswahl; //Userwahl

	while(auswahl != 0) {

		cout &lt;&lt; &quot;Bitte wählen Sie aus folgenden Funktionen aus:&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Neue Textdatei mit Inhalt erstellen (1)&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Datei löschen (2)&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Datei auslesen (3)&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;Programm beenden (4)&quot; &lt;&lt; endl;

		//Menüverarbeitung
		switch(auswahl) {

			case 1:
				FIHA.NewData();
			break;

			case 2:
				FIHA.DeleteData();
			break;

			case 3:
				FIHA.ShowData();
			break;

			case 4:
				return 0;
			break;

			default:
				cout &lt;&lt; &quot;Ihre Eingabe war falsch!\a&quot; &lt;&lt; endl;
				return 0;
			break;
		}
	}
}
</code></pre>
<p>Und das sagt mir mein Compiler:</p>
<blockquote>
<p>manu@manu-desktop:~$ g++ filehandler.cpp -o filehandler<br />
filehandler.cpp:130:7: warning: no newline at end of file<br />
filehandler.cpp: In member function »void FileHandler::NewData()«:<br />
filehandler.cpp:35: Fehler: keine passende Funktion für Aufruf von »std::basic_ofstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, const std::_Ios_Openmode&amp;)«<br />
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/fstream:626: Anmerkung: Kandidaten sind: void std::basic_ofstream&lt;_CharT, _Traits&gt;::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]<br />
filehandler.cpp: In member function »void FileHandler::DeleteData()«:<br />
filehandler.cpp:57: Fehler: keine passende Funktion für Aufruf von »remove(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)«<br />
/usr/include/stdio.h:152: Anmerkung: Kandidaten sind: int remove(const char*)<br />
filehandler.cpp: In member function »void FileHandler::ShowData()«:<br />
filehandler.cpp:71: Fehler: keine passende Funktion für Aufruf von »std::basic_ifstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, const std::_Ios_Openmode&amp;)«<br />
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/fstream:495: Anmerkung: Kandidaten sind: void std::basic_ifstream&lt;_CharT, _Traits&gt;::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]</p>
</blockquote>
<p>Leider verstehe ich nicht, was ich falsch gemacht habe, da ich noch nicht so der Profi bin.</p>
<p>Ich hoffe ihr könnt mir ein paar Tips geben!<br />
Vielen Dank schonmal!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356472</guid><dc:creator><![CDATA[TheShadowdx]]></dc:creator><pubDate>Fri, 31 Aug 2007 20:41:23 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Klasse erkennt Filefunktionen nicht on Fri, 31 Aug 2007 20:56:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">data.open(path+DateiName.c_str(), ios_base::out);
</code></pre>
<p>open erwartet einen C-String als Parameter. Daher musst du die Methode c_str für den resultierenden String aufrufen! <code>(path+DateiName).c_str()</code></p>
<p>btw. wäre es eher zu empfehlen das Anlegen der Variable <code>data</code> auf den Zeitpunkt zu verschieben, an dem du die Datei öffnest. Das <code>close</code> am Ende ist übrigens nicht notwendig, da dies implizit im Destruktor passiert.</p>
<pre><code class="language-cpp">ofstream open( (path + DateiName).c_str() );
</code></pre>
<p>entsprechend auch beim einlesen.</p>
<p>btw. solltest du imho entweder englische oder deutsche Bezeichner wählen, aber kein Mischmasch!</p>
<blockquote>
<p>filehandler.cpp:130:7: warning: no newline at end of file</p>
</blockquote>
<p>Das sollte verständlich sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356487</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 31 Aug 2007 20:56:55 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Klasse erkennt Filefunktionen nicht on Fri, 31 Aug 2007 20:58:16 GMT]]></title><description><![CDATA[<p>1. Der Benutzer braucht in der Konsole nicht den \ escapen, das muss man nur im Quellcode machen. Bei der Eingabe in der Konsole reicht z.B. C:\Temp\</p>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">data.open(path+DateiName.c_str(), ios_base::out);
</code></pre>
<p>Entweder liest Du den kompletten Pfad + Dateinamen auf einmal in einen string oder Du kombinierst beide in einem zusätzlichen string und übergibst den als Parameter</p>
<pre><code class="language-cpp">string complete_path(path + DateiName);
data.open(complete_path.c_str());
</code></pre>
<p>ebenso bei remove.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356490</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Fri, 31 Aug 2007 20:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Klasse erkennt Filefunktionen nicht on Fri, 31 Aug 2007 21:01:06 GMT]]></title><description><![CDATA[<p>Ok, vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356492</guid><dc:creator><![CDATA[TheShadowdx]]></dc:creator><pubDate>Fri, 31 Aug 2007 21:01:06 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Klasse erkennt Filefunktionen nicht on Fri, 31 Aug 2007 21:28:32 GMT]]></title><description><![CDATA[<p>Ich bins nochmal. Also es funktioniert alles wunderbar, allerdings habe ich noch eine Frage: Wie kann ich mit cin einen mehrzeiligen Text einlesen? Ich will ja auch Dateien schreiben können, die mehr als nur eine Zeile beinhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356511</guid><dc:creator><![CDATA[TheShadowdx]]></dc:creator><pubDate>Fri, 31 Aug 2007 21:28:32 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Klasse erkennt Filefunktionen nicht on Fri, 31 Aug 2007 22:02:38 GMT]]></title><description><![CDATA[<p>In etwa so:</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Text eingeben (# um abzubrechen):\n&quot;;

do {
  cin &gt;&gt; text;

  if (text == &quot;#&quot;)
    break;

  data &lt;&lt; text;
} while (true);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1356531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356531</guid><dc:creator><![CDATA[2am]]></dc:creator><pubDate>Fri, 31 Aug 2007 22:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Klasse erkennt Filefunktionen nicht on Fri, 31 Aug 2007 22:34:59 GMT]]></title><description><![CDATA[<p>Das funktioniert auch!:)<br />
Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356539</guid><dc:creator><![CDATA[TheShadowdx]]></dc:creator><pubDate>Fri, 31 Aug 2007 22:34:59 GMT</pubDate></item></channel></rss>