<?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[String Spliitern?]]></title><description><![CDATA[<p>Hallo ich hoffe ich bin im richtigen Forum :s<br />
Also mein Problem ist folgendes,wir müssen in der Schule ein Programm schreiben in dem wir unter anderem auch abspeichern und laden müssen,<br />
Das habe ich soweit auch hinbekommen nur mein Problem ist, beim Laden kann ich die gespeicherten Daten zwar auf der Konsole wieder geben jedoch nicht mit weiter arbeiten o.ä. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> jetzt wurde mir gesagt das ich die strings splittern muss und iwie abspeichern aber damit bin ich überfordert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> ich hoffe mir kann jemand helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> ich bin jetzt nicht wirklich ein Profi das wird man sicher merken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> also hier ist der code zu speichern und laden :</p>
<pre><code>void speichern(artikel a[], int n) 
{
	if (!n) // kurzschreibweise n = 0
	{
		cout &lt;&lt; &quot;Es gibt nichts zu speichern.&quot; &lt;&lt;endl;
		return;
	}
	ofstream dat; 
	stringstream ss; 

	char buffer[MAX_PATH]; 
	string::size_type pos = string(buffer).find_last_of(&quot;\\/&quot;);
	std::string path = std::string(buffer).substr(0, pos); 
	ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;    

	dat.open(ss.str().c_str());

	for (size_t i = 0; i &lt; n; ++i) 
	{
    dat &lt;&lt; i &lt;&lt; &quot;;&quot; &lt;&lt; a[i].nr &lt;&lt; &quot;;&quot;&lt;&lt; a[i].name &lt;&lt; &quot;;&quot; &lt;&lt; a[i].preis &lt;&lt; &quot;;&quot; &lt;&lt; a[i].anzahl&lt;&lt; endl;
	}
	dat.close();//datei schließen
	cout &lt;&lt; &quot;Datenbank wurde gespeichert unter &quot; &lt;&lt; path &lt;&lt; &quot;\\ARTIKEL.DAT.&quot; &lt;&lt; endl;
}

void laden (artikel a[], int n)
{
stringstream ss;
char buffer[MAX_PATH];
GetModuleFileName(NULL, buffer, MAX_PATH);
string::size_type pos = string(buffer).find_last_of(&quot;\\/&quot;);
std::string path = std::string(buffer).substr(0, pos);
ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;

std::ifstream Eingabedatei (ss.str().c_str());

if (!Eingabedatei) 
{
   cout &lt;&lt; &quot;\tEs wurden bisher keine Dateien abgespeichert oder, &quot;&lt;&lt;    endl;
   cout &lt;&lt; &quot;\t die Ausgangsdatei befindet sich nicht mehr im Zielordner. &quot; &lt;&lt; endl;
}

string line;
if (Eingabedatei.is_open()) 
{
  while (getline(Eingabedatei, line)) 
    {
      cout &lt;&lt; line &lt;&lt; '\n';
    }
    Eingabedatei.close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/325563/string-spliitern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 14:24:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325563.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 May 2014 06:45:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String Spliitern? on Thu, 08 May 2014 06:51:18 GMT]]></title><description><![CDATA[<p>Hallo ich hoffe ich bin im richtigen Forum :s<br />
Also mein Problem ist folgendes,wir müssen in der Schule ein Programm schreiben in dem wir unter anderem auch abspeichern und laden müssen,<br />
Das habe ich soweit auch hinbekommen nur mein Problem ist, beim Laden kann ich die gespeicherten Daten zwar auf der Konsole wieder geben jedoch nicht mit weiter arbeiten o.ä. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> jetzt wurde mir gesagt das ich die strings splittern muss und iwie abspeichern aber damit bin ich überfordert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> ich hoffe mir kann jemand helfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> ich bin jetzt nicht wirklich ein Profi das wird man sicher merken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> also hier ist der code zu speichern und laden :</p>
<pre><code>void speichern(artikel a[], int n) 
{
	if (!n) // kurzschreibweise n = 0
	{
		cout &lt;&lt; &quot;Es gibt nichts zu speichern.&quot; &lt;&lt;endl;
		return;
	}
	ofstream dat; 
	stringstream ss; 

	char buffer[MAX_PATH]; 
	string::size_type pos = string(buffer).find_last_of(&quot;\\/&quot;);
	std::string path = std::string(buffer).substr(0, pos); 
	ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;    

	dat.open(ss.str().c_str());

	for (size_t i = 0; i &lt; n; ++i) 
	{
    dat &lt;&lt; i &lt;&lt; &quot;;&quot; &lt;&lt; a[i].nr &lt;&lt; &quot;;&quot;&lt;&lt; a[i].name &lt;&lt; &quot;;&quot; &lt;&lt; a[i].preis &lt;&lt; &quot;;&quot; &lt;&lt; a[i].anzahl&lt;&lt; endl;
	}
	dat.close();//datei schließen
	cout &lt;&lt; &quot;Datenbank wurde gespeichert unter &quot; &lt;&lt; path &lt;&lt; &quot;\\ARTIKEL.DAT.&quot; &lt;&lt; endl;
}

void laden (artikel a[], int n)
{
stringstream ss;
char buffer[MAX_PATH];
GetModuleFileName(NULL, buffer, MAX_PATH);
string::size_type pos = string(buffer).find_last_of(&quot;\\/&quot;);
std::string path = std::string(buffer).substr(0, pos);
ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;

std::ifstream Eingabedatei (ss.str().c_str());

if (!Eingabedatei) 
{
   cout &lt;&lt; &quot;\tEs wurden bisher keine Dateien abgespeichert oder, &quot;&lt;&lt;    endl;
   cout &lt;&lt; &quot;\t die Ausgangsdatei befindet sich nicht mehr im Zielordner. &quot; &lt;&lt; endl;
}

string line;
if (Eingabedatei.is_open()) 
{
  while (getline(Eingabedatei, line)) 
    {
      cout &lt;&lt; line &lt;&lt; '\n';
    }
    Eingabedatei.close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2398033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398033</guid><dc:creator><![CDATA[Kalissi]]></dc:creator><pubDate>Thu, 08 May 2014 06:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to String Spliitern? on Thu, 08 May 2014 07:42:24 GMT]]></title><description><![CDATA[<p>Hallo Kalissi,</p>
<p>Willkommen im C++-Forum.</p>
<p>Kalissi schrieb:</p>
<blockquote>
<p>Also mein Problem ist folgendes,wir müssen in der Schule ein Programm schreiben in dem wir unter anderem auch abspeichern und laden müssen,<br />
Das habe ich soweit auch hinbekommen nur mein Problem ist, beim Laden kann ich die gespeicherten Daten zwar auf der Konsole wieder geben jedoch nicht mit weiter arbeiten o.ä. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> jetzt wurde mir gesagt das ich die strings splittern muss ...</p>
</blockquote>
<p>Nein - da ist i.A. ein Holzweg. Besser Du liest gleich die Daten, die Du intern im Programm benötigst. <code>getline</code> ist dem entsprechend die falsche Wahl.</p>
<p>Das wichtigste hast Du nicht geschrieben:<br />
- wie sieht der Inhalt der Datei aus?<br />
- wie ist der Typ <code>artikel</code> definiert?</p>
<p>Aus</p>
<p>Kalissi schrieb:</p>
<blockquote>
<pre><code>for (size_t i = 0; i &lt; n; ++i)
    {
    dat &lt;&lt; i &lt;&lt; &quot;;&quot; &lt;&lt; a[i].nr &lt;&lt; &quot;;&quot;&lt;&lt; a[i].name &lt;&lt; &quot;;&quot; &lt;&lt; a[i].preis &lt;&lt; &quot;;&quot; &lt;&lt; a[i].anzahl&lt;&lt; endl;
    }
</code></pre>
</blockquote>
<p>schließe ich, dass <code>artikel</code> ungefähr so definiert ist:</p>
<pre><code>struct artikel {
    int nr;
    std::string name; // ich hoffe std::string und nicht char*
    float preis;
    int anzahl;
};
</code></pre>
<p>Der C++-Weg, um <code>artikel</code> zu schreiben und zu lesen, besteht darin, sogenannte stream inserter, bzw. <a href="http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/" rel="nofollow">extractor</a> für <code>artikel</code> zu schreiben. Die Prototypen wären:</p>
<pre><code>std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const artikel&amp; a ); // inserter
std::istream&amp; operator&gt;&gt;( std::istream&amp; in, artikel&amp; a ); // extractor
</code></pre>
<p>dann kannst Du Artikel so schreiben:</p>
<pre><code>for (size_t i = 0; i &lt; n; ++i)
        dat &lt;&lt; a[i];
</code></pre>
<p>und so wieder lesen:</p>
<pre><code>size_t n = 0;
    for( ; n &lt; N &amp;&amp; Eingabedatei &gt;&gt; a[n]; ++n ) // N ist maximale Größe des array
        ;
    if( Eingabedatei.eof() )
        cout &lt;&lt; &quot;Ok - bis End-Of-File gelesen\n&quot;;
    cout &lt;&lt; n &lt;&lt; &quot; Artikel gelesen&quot; &lt;&lt; endl;
</code></pre>
<p>Eine sehr einfache Implementierung könnte so aussehen:</p>
<pre><code>std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const artikel&amp; a )
{
    return out &lt;&lt; a.nr &lt;&lt; &quot;;&quot;&lt;&lt; a.name &lt;&lt; &quot;;&quot; &lt;&lt; a.preis &lt;&lt; &quot;;&quot; &lt;&lt; a.anzahl &lt;&lt; std::endl;
}
std::istream&amp; operator&gt;&gt;( std::istream&amp; in, artikel&amp; a )
{
    char semikolon;
    in &gt;&gt; a.nr &gt;&gt; semikolon;
    getline( in, a.name, ';' );
    return in &gt;&gt; a.preis &gt;&gt; semikolon &gt;&gt; a.anzahl;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398040</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 08 May 2014 07:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to String Spliitern? on Thu, 08 May 2014 08:15:42 GMT]]></title><description><![CDATA[<p>Hay also erstmal danke für ihre ausführliche antwort :o<br />
und danke das sie sich die zeit genommen haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Tut mir leid das ich einige sachen Vergessen hab anzugeben nur ich war unsicher was wirklich wichitg ist .. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>ich Denke ich verstehe was sie meinen , nur leider bin ich einfach zu dumm es umzusetzen oder mach iwas flasch denn bei mir werden nur lauter fehlermeldungen angezeigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398046</guid><dc:creator><![CDATA[Kalissi]]></dc:creator><pubDate>Thu, 08 May 2014 08:15:42 GMT</pubDate></item><item><title><![CDATA[Reply to String Spliitern? on Thu, 08 May 2014 08:56:25 GMT]]></title><description><![CDATA[<p>Kalissi schrieb:</p>
<blockquote>
<p>.. mach iwas flasch denn bei mir werden nur lauter fehlermeldungen angezeigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Dann zeig mal deinen gesamten Code und die dazugehörigen Fehlermeldungen (Copy/Paste). So kann dir hier am schnellsten geholfen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398049</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 08 May 2014 08:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to String Spliitern? on Thu, 08 May 2014 09:09:46 GMT]]></title><description><![CDATA[<p>Kalissi schrieb:</p>
<blockquote>
<p>Hay also erstmal danke für ihre ausführliche antwort :o<br />
und danke das sie sich die zeit genommen haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Tut mir leid das ich einige sachen Vergessen hab anzugeben nur ich war unsicher was wirklich wichitg ist .. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>ich Denke ich verstehe was sie meinen , nur leider bin ich einfach zu dumm es umzusetzen oder mach iwas flasch denn bei mir werden nur lauter fehlermeldungen angezeigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Ich glaube, auch wenn hier manche etwas älter als du(und auch älter als manch anderer;)) sind, sind wir hier doch eine Forengemeinschaft und ein Du ist auch Werner gegenüber Ok.</p>
<p>... woebi.. ein Respekt-Sie wäre auch nicht schlecht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Zu deinem Problem:<br />
Was Werner meint, ist, dass es schöner wäre, wenn sich deine Artikel-Objekte selbst darum kümmern, wie sie ausgegeben bzw eingelesen werden. D.h. deine beiden Funktionen speichern und laden würden in die Verantwortung der Klasse Artikel gegeben, so dass du dann später sowas hier schreiben kannst:</p>
<pre><code>std::istream &amp; istr = std::cin; // oder ein anderer Stream, z.B. auf eine Datei
std::ostream &amp; ostr = std::cout; // oder ein anderer OutputStream, z.B. in eine Datei

Artikel a(/*....*/);

ostr &lt;&lt; a &lt;&lt; std::endl; // speichert den Artikel a ab

Atrikel b;
istr &gt;&gt; b; // liest die Daten für Artikel b aus dem Stream
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2398050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398050</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 08 May 2014 09:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to String Spliitern? on Thu, 08 May 2014 12:25:38 GMT]]></title><description><![CDATA[<p>Also hier ist der komplette Quelltext wie gesagt das ist ziemlich Amateur haft nur bin halt nicht so gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /><br />
ehm und wegen dem sie .. ich du'ze nciht gerne einfach jemanden sondern erst wenn es einem angeboten wird :s<br />
ich hoffe mit dem kompletten kann mir jemand sagen wie ich was machen muss damit das Programm so funktioniert wie es soll weil eure erklärungen sind eingentlich eindeutig nur sobald ich auf mein Programm dann schaue weiß ich nciht wie ihr das meint <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
main hab ich weg gelassen weil da nur die Voids ausgeführt werden und da wirklich ncihts besonderes gemacht wird :o</p>
<p>[code=&quot;cpp&quot;]<br />
#include &lt;string&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;limits&gt;<br />
#include &lt;fstream&gt;<br />
#include &lt;windows.h&gt;<br />
#include &lt;sstream&gt;<br />
using namespace std;</p>
<p>struct artikel<br />
{<br />
int nr; // Artikelnummer<br />
string name; // Artikelbezeichnung<br />
float preis; // Artikelpreis<br />
int anzahl; // Artikelanzahl<br />
};</p>
<p>artikel* create()</p>
<p>{<br />
int artikelnummer, anzahl;<br />
float preis;<br />
string name;</p>
<p>while (1) //(1) bedeutet endlosschleife wenn nötig<br />
{<br />
cout &lt;&lt; &quot;Artikelnummer: &quot;;<br />
cin &gt;&gt; artikelnummer;<br />
if (cin.fail())<br />
{<br />
cin.clear();löschen<br />
cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');<br />
cout &lt;&lt; &quot;(!) Fehler: Nur ganzzahlige Artikelnummernerlaubt.&quot; &lt;&lt;endl;<br />
continue;<br />
}<br />
break; // aus while schleife austreten wenn user gülltige eingabe gemacht hat<br />
}</p>
<p>cin.clear(); //eingabe nciht beachten<br />
cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');<br />
cout &lt;&lt; &quot;Artikelbezeichnung: &quot;;<br />
getline(cin, name);</p>
<p>while (1)<br />
{<br />
cout &lt;&lt; &quot;Preis: &quot;;<br />
cin &gt;&gt; preis;//eingabe Preis<br />
if (cin.fail())<br />
{<br />
cin.clear();<br />
cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');<br />
cout &lt;&lt; &quot;(!) Fehler: Nur Dezimalbrueche (ggf. mit Dezimalpunkt) erlaubt.&quot; &lt;&lt; std::endl;<br />
continue<br />
}<br />
break;<br />
}</p>
<p>while (1)<br />
{<br />
cout &lt;&lt; &quot;Anzahl: &quot;;<br />
cin &gt;&gt; anzahl;<br />
if (cin.fail())<br />
{<br />
cin.clear();<br />
cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');<br />
cout &lt;&lt; &quot;(!) Fehler: Nur ganzzahlige Anzahlen erlaubt.&quot; &lt;&lt; endl;<br />
continue;<br />
}<br />
break;<br />
}</p>
<p>artikel *a = new artikel();<br />
a-&gt;nr = artikelnummer;<br />
a-&gt;name = name;<br />
a-&gt;preis = preis;<br />
a-&gt;anzahl = anzahl;<br />
return a; //<br />
}</p>
<p>int eingeben(artikel a[], int n)<br />
{<br />
if (n &lt; 100) //n max. 99<br />
{ // anzeige wie viele datensätze bisher in der Datenbank sind<br />
a[n] = *create(); // forderung eines artikel arrays<br />
cout &lt;&lt; &quot;====================================================================&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Neuer Artikel wurde erstellt. Es &quot; &lt;&lt; (!n ? &quot;ist&quot; : &quot;sind&quot;) &lt;&lt; &quot; nun &quot; &lt;&lt; (n + 1) &lt;&lt; &quot; Artikel in der Datenbank.&quot; &lt;&lt;endl;<br />
cout &lt;&lt; &quot;====================================================================&quot; &lt;&lt; endl;<br />
return ++n;<br />
}<br />
else<br />
return n;<br />
}</p>
<p>void ausgeben(artikel a[], int n)<br />
{<br />
cout &lt;&lt; &quot;<s><s><s><s><s><s><s><s><s><s><s><s><s><s><s>&quot; &lt;&lt; endl;<br />
for (size_t i = 0; i &lt; n; ++i)<br />
{<br />
cout &lt;&lt; &quot;Datensatz.........: &quot; &lt;&lt; i &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Artikelnummer.....: &quot; &lt;&lt; a[i].nr &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Artikelbezeichnung: &quot; &lt;&lt; a[i].name &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Preis.............: &quot; &lt;&lt; a[i].preis &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Anzahl............: &quot; &lt;&lt; a[i].anzahl &lt;&lt; endl;<br />
cout &lt;&lt; &quot;</s></s></s></s></s></s></s></s></s></s></s></s></s></s></s>&quot; &lt;&lt; endl;<br />
}<br />
}</p>
<p>void speichern(artikel a[], int n)<br />
{<br />
if (!n) // kurzschreibweise n = 0<br />
{<br />
cout &lt;&lt; &quot;Es gibt nichts zu speichern.&quot; &lt;&lt;endl;<br />
return;<br />
}<br />
ofstream dat;<br />
stringstream ss;<br />
char buffer[MAX_PATH];<br />
GetModuleFileName(NULL, buffer, MAX_PATH);<br />
string::size_type pos = string(buffer).find_last_of(&quot;\/&quot;);</p>
<p>std::string path = std::string(buffer).substr(0, pos);</p>
<p>ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;</p>
<p>dat.open(ss.str().c_str());</p>
<p>for (size_t i = 0; i &lt; n; ++i)<br />
{<br />
dat &lt;&lt; i &lt;&lt; &quot;;&quot; &lt;&lt; a[i].nr &lt;&lt; &quot;;&quot;&lt;&lt; a[i].name &lt;&lt; &quot;;&quot; &lt;&lt; a[i].preis &lt;&lt; &quot;;&quot; &lt;&lt; a[i].anzahl&lt;&lt; endl;<br />
}<br />
dat.close();//datei schließen<br />
cout &lt;&lt; &quot;Datenbank wurde gespeichert unter &quot; &lt;&lt; path &lt;&lt; &quot;\\ARTIKEL.DAT.&quot; &lt;&lt; endl;<br />
}</p>
<p>void laden (artikel a[], int n)<br />
{<br />
stringstream ss;<br />
char buffer[MAX_PATH];<br />
GetModuleFileName(NULL, buffer, MAX_PATH);<br />
string::size_type pos = string(buffer).find_last_of(&quot;\/&quot;);<br />
std::string path = std::string(buffer).substr(0, pos);<br />
ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;</p>
<p>std::ifstream Eingabedatei (ss.str().c_str());</p>
<p>if (!Eingabedatei)<br />
{<br />
cout &lt;&lt; &quot;\tEs wurden bisher keine Dateien abgespeichert oder, &quot;&lt;&lt; endl;<br />
cout &lt;&lt; &quot;\tdie Ausgangsdatei befindet sich nicht mehr im Zielordner. &quot; &lt;&lt; endl;<br />
}</p>
<p>string line;<br />
if (Eingabedatei.is_open())<br />
{<br />
while (getline(Eingabedatei, line))<br />
{<br />
cout &lt;&lt; line &lt;&lt; '\n';<br />
}<br />
Eingabedatei.close();<br />
}</p>
<p>}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398099</guid><dc:creator><![CDATA[Kalissi]]></dc:creator><pubDate>Thu, 08 May 2014 12:25:38 GMT</pubDate></item><item><title><![CDATA[Reply to String Spliitern? on Thu, 08 May 2014 12:47:24 GMT]]></title><description><![CDATA[<p>Korrektur (korrigierteStellen mit &lt;======= markiert):</p>
<pre><code>#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;limits&gt;
#include &lt;fstream&gt;
#define NOMINMAX    // &lt;======= #define max unterdrücken
#include &lt;windows.h&gt;
#include &lt;sstream&gt;
using namespace std;

struct artikel
{
    int nr; // Artikelnummer
    string name; // Artikelbezeichnung
    float preis; // Artikelpreis
    int anzahl; // Artikelanzahl
};

artikel* create()

{
    int artikelnummer, anzahl;
    float preis;
    string name;

    while( 1 ) //(1) bedeutet endlosschleife wenn nötig
    {
        cout &lt;&lt; &quot;Artikelnummer: &quot;;
        cin &gt;&gt; artikelnummer;
        if( cin.fail() )
        {
            cin.clear(); // löschen   // &lt;====== kommentar vergessen
                cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');
            cout &lt;&lt; &quot;(!) Fehler: Nur ganzzahlige Artikelnummernerlaubt.&quot; &lt;&lt; endl;
            continue;
        }
        break; // aus while schleife austreten wenn user gülltige eingabe gemacht hat
    }

    cin.clear(); //eingabe nciht beachten
    cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');
    cout &lt;&lt; &quot;Artikelbezeichnung: &quot;;
    getline(cin, name);

    while( 1 )
    {
        cout &lt;&lt; &quot;Preis: &quot;;
        cin &gt;&gt; preis;//eingabe Preis
        if( cin.fail() )
        {
            cin.clear();
            cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');
            cout &lt;&lt; &quot;(!) Fehler: Nur Dezimalbrueche (ggf. mit Dezimalpunkt) erlaubt.&quot; &lt;&lt; std::endl;
            continue; // &lt;======= ';' vergessen
        }
        break;
    }

    while( 1 )
    {
        cout &lt;&lt; &quot;Anzahl: &quot;;
        cin &gt;&gt; anzahl;
        if( cin.fail() )
        {
            cin.clear();
            cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n');
            cout &lt;&lt; &quot;(!) Fehler: Nur ganzzahlige Anzahlen erlaubt.&quot; &lt;&lt; endl;
            continue;
        }
        break;
    }

    artikel *a = new artikel();
    a-&gt;nr = artikelnummer;
    a-&gt;name = name;
    a-&gt;preis = preis;
    a-&gt;anzahl = anzahl;
    return a; //
}

int eingeben(artikel a[], int n)
{
    if( n &lt; 100 ) //n max. 99
    { // anzeige wie viele datensätze bisher in der Datenbank sind
        a[n] = *create(); // forderung eines artikel arrays
        cout &lt;&lt; &quot;====================================================================&quot; &lt;&lt; endl;
        cout &lt;&lt; &quot;Neuer Artikel wurde erstellt. Es &quot; &lt;&lt; ( !n ? &quot;ist&quot; : &quot;sind&quot; ) &lt;&lt; &quot; nun &quot; &lt;&lt; ( n + 1 ) &lt;&lt; &quot; Artikel in der Datenbank.&quot; &lt;&lt; endl;
        cout &lt;&lt; &quot;====================================================================&quot; &lt;&lt; endl;
        return ++n;
    }
    else
        return n;
}

void ausgeben(artikel a[], std::size_t n) // &lt;======== signed/unsigned mismatch n &amp; i
{
    cout &lt;&lt; &quot;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&quot; &lt;&lt; endl;
    for( size_t i = 0; i &lt; n; ++i )
    {
        cout &lt;&lt; &quot;Datensatz.........: &quot; &lt;&lt; i &lt;&lt; endl;
        cout &lt;&lt; &quot;Artikelnummer.....: &quot; &lt;&lt; a[i].nr &lt;&lt; endl;
        cout &lt;&lt; &quot;Artikelbezeichnung: &quot; &lt;&lt; a[i].name &lt;&lt; endl;
        cout &lt;&lt; &quot;Preis.............: &quot; &lt;&lt; a[i].preis &lt;&lt; endl;
        cout &lt;&lt; &quot;Anzahl............: &quot; &lt;&lt; a[i].anzahl &lt;&lt; endl;
        cout &lt;&lt; &quot;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&quot; &lt;&lt; endl;
    }
}

void speichern(artikel a[], std::size_t n) // &lt;======== signed/unsigned mismatch n &amp; i
{
    if( !n ) // kurzschreibweise n = 0
    {
        cout &lt;&lt; &quot;Es gibt nichts zu speichern.&quot; &lt;&lt; endl;
        return;
    }
    ofstream dat;
    stringstream ss;
    char buffer[MAX_PATH];
    GetModuleFileName(NULL, buffer, MAX_PATH);
    string::size_type pos = string(buffer).find_last_of(&quot;\\/&quot;);

    std::string path = std::string(buffer).substr(0, pos);

    ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;

    dat.open(ss.str().c_str());

    for( size_t i = 0; i &lt; n; ++i )
    {
        dat &lt;&lt; i &lt;&lt; &quot;;&quot; &lt;&lt; a[i].nr &lt;&lt; &quot;;&quot; &lt;&lt; a[i].name &lt;&lt; &quot;;&quot; &lt;&lt; a[i].preis &lt;&lt; &quot;;&quot; &lt;&lt; a[i].anzahl &lt;&lt; endl;
    }
    dat.close();//datei schließen
    cout &lt;&lt; &quot;Datenbank wurde gespeichert unter &quot; &lt;&lt; path &lt;&lt; &quot;\\ARTIKEL.DAT.&quot; &lt;&lt; endl;
}

void laden(artikel a[], int n)
{
    stringstream ss;
    char buffer[MAX_PATH];
    GetModuleFileName(NULL, buffer, MAX_PATH);
    string::size_type pos = string(buffer).find_last_of(&quot;\\/&quot;);
    std::string path = std::string(buffer).substr(0, pos);
    ss &lt;&lt; path &lt;&lt; &quot;/ARTIKEL.DAT&quot;;

    std::ifstream Eingabedatei(ss.str().c_str());

    if( !Eingabedatei )
    {
        cout &lt;&lt; &quot;\tEs wurden bisher keine Dateien abgespeichert oder, &quot; &lt;&lt; endl;
        cout &lt;&lt; &quot;\tdie Ausgangsdatei befindet sich nicht mehr im Zielordner. &quot; &lt;&lt; endl;
    }

    string line;
    if( Eingabedatei.is_open() )
    {
        while( getline(Eingabedatei, line) )
        {
            cout &lt;&lt; line &lt;&lt; '\n';
        }
        Eingabedatei.close();
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2398108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398108</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 08 May 2014 12:47:24 GMT</pubDate></item><item><title><![CDATA[Reply to String Spliitern? on Fri, 09 May 2014 05:53:59 GMT]]></title><description><![CDATA[<p>Oha vielen vielen dank das sie sich so viel mühe gemacht haben :o<br />
Das Programm geht wieder dank ihrer Hilfe ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398221</guid><dc:creator><![CDATA[Kalissi]]></dc:creator><pubDate>Fri, 09 May 2014 05:53:59 GMT</pubDate></item></channel></rss>