<?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[Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger]]></title><description><![CDATA[<p>Hi all!</p>
<p>Ich bin derzeit dabei ein Tool zu schreiben das mit Werte aus einer CSV Datei ausliest und diese in eine MySql db wieder einspielt.</p>
<p>Mein Problem ist jetzt folgendes:</p>
<p>Ich habe einen &quot;CSV Reader&quot; geschrieben dir mit die Werte ausließt.</p>
<p>Soweit so gut, nur möchte ich diese Werte nicht in dieser Funktion weiter verarbeiten sondern dem Hauptprogramm zurückgeben um dann in einer neuen Funktion diese Daten zu verarbeiten.</p>
<p>Das Problem selber ist sicher für euch kein Problem zu lösen, nur möchte ich eine Lösung die für mich als Anfänger leicht zu verstehen ist.(wenn möglich)</p>
<p>Ich weis das es mit Vectoren gehen soll Dynamische arrays zu erzeugen, nur hab ich Vektoren noch nicht durchgekommen und hab d.h. auch keine Ahnung wie und warum das Funktioniert.</p>
<p>Was ich gern hätte währe ein schubs in die richtige Richtung.</p>
<p>Hier mal meine Reader Funktion:</p>
<pre><code class="language-cpp">bool readFile (string fileIn){

	fstream file;
	file.open ((fileIn).c_str(),ios::in);
	if (file.fail())
	{
		cout &lt;&lt; &quot;Error beim oeffnen der datei: &quot; &lt;&lt; (fileIn).c_str() &lt;&lt; endl;
		perror(&quot;Read Fehler&quot;);
		return false;
	}

	string tmp;
	while(!file.eof() ) {
	getline(file, tmp); // Zeile lesen

	size_t x=0;
	size_t p=0;
	int i=0;
	string auftrag[13];

	// ; suchen und Werte trennen
	while(x=tmp.find(';',x)){
		if (x==string::npos){
			break;
		}

		auftrag[i] = tmp.substr(p, (x-p));

	//	cout &lt;&lt; &quot;found : &quot; &lt;&lt; auftrag[i] &lt;&lt; endl;
		i++;
		x++;
		p=x;		
	}

	// Hier sollten dann irgendwie am ende ein dynamisches array sein.

}

	file.close();
	return true;
}
</code></pre>
<p>Der Code ist sicher nicht so Optimal geschrieben, er funktioniert jedoch <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>
<p>Aufgebaut sollte das Array so sein: auftrag[zeilennr.][spaltennr.]<br />
Mein Problem genau ist jetzt nicht zu wissen wie viele Zeilen die Datei hat, ich könnte natürlich die Datei zwei mal einlesen um zu erfahren wie viele Zeilen da sind, nur finde ich diese Lösung eher &quot;Unschön&quot;.</p>
<p>Auch bin ich der Meinung wenn ich Speicher aus dem heap mit new aus der Funktion heraus anfordere, wird dieser Speicher doch automatisch nach Beendigung der Funktion wieder freigegeben oder?<br />
Dann müsst ich das array schon in der Main Funktion anlegen.</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227073/wie-dynamisches-array-erzeugen-und-weitergeben-gt-anfänger</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 04:43:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227073.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Nov 2008 13:56:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Mon, 10 Nov 2008 13:56:04 GMT]]></title><description><![CDATA[<p>Hi all!</p>
<p>Ich bin derzeit dabei ein Tool zu schreiben das mit Werte aus einer CSV Datei ausliest und diese in eine MySql db wieder einspielt.</p>
<p>Mein Problem ist jetzt folgendes:</p>
<p>Ich habe einen &quot;CSV Reader&quot; geschrieben dir mit die Werte ausließt.</p>
<p>Soweit so gut, nur möchte ich diese Werte nicht in dieser Funktion weiter verarbeiten sondern dem Hauptprogramm zurückgeben um dann in einer neuen Funktion diese Daten zu verarbeiten.</p>
<p>Das Problem selber ist sicher für euch kein Problem zu lösen, nur möchte ich eine Lösung die für mich als Anfänger leicht zu verstehen ist.(wenn möglich)</p>
<p>Ich weis das es mit Vectoren gehen soll Dynamische arrays zu erzeugen, nur hab ich Vektoren noch nicht durchgekommen und hab d.h. auch keine Ahnung wie und warum das Funktioniert.</p>
<p>Was ich gern hätte währe ein schubs in die richtige Richtung.</p>
<p>Hier mal meine Reader Funktion:</p>
<pre><code class="language-cpp">bool readFile (string fileIn){

	fstream file;
	file.open ((fileIn).c_str(),ios::in);
	if (file.fail())
	{
		cout &lt;&lt; &quot;Error beim oeffnen der datei: &quot; &lt;&lt; (fileIn).c_str() &lt;&lt; endl;
		perror(&quot;Read Fehler&quot;);
		return false;
	}

	string tmp;
	while(!file.eof() ) {
	getline(file, tmp); // Zeile lesen

	size_t x=0;
	size_t p=0;
	int i=0;
	string auftrag[13];

	// ; suchen und Werte trennen
	while(x=tmp.find(';',x)){
		if (x==string::npos){
			break;
		}

		auftrag[i] = tmp.substr(p, (x-p));

	//	cout &lt;&lt; &quot;found : &quot; &lt;&lt; auftrag[i] &lt;&lt; endl;
		i++;
		x++;
		p=x;		
	}

	// Hier sollten dann irgendwie am ende ein dynamisches array sein.

}

	file.close();
	return true;
}
</code></pre>
<p>Der Code ist sicher nicht so Optimal geschrieben, er funktioniert jedoch <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>
<p>Aufgebaut sollte das Array so sein: auftrag[zeilennr.][spaltennr.]<br />
Mein Problem genau ist jetzt nicht zu wissen wie viele Zeilen die Datei hat, ich könnte natürlich die Datei zwei mal einlesen um zu erfahren wie viele Zeilen da sind, nur finde ich diese Lösung eher &quot;Unschön&quot;.</p>
<p>Auch bin ich der Meinung wenn ich Speicher aus dem heap mit new aus der Funktion heraus anfordere, wird dieser Speicher doch automatisch nach Beendigung der Funktion wieder freigegeben oder?<br />
Dann müsst ich das array schon in der Main Funktion anlegen.</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612767</guid><dc:creator><![CDATA[iPanic]]></dc:creator><pubDate>Mon, 10 Nov 2008 13:56:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Mon, 10 Nov 2008 14:13:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Lies dich lieber in std::vector ein. Z.Bsp. hier im Magazin<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html</a><br />
Damit hast du es wesentlich leichter.</p>
<p>iPanic schrieb:</p>
<blockquote>
<p>Auch bin ich der Meinung wenn ich Speicher aus dem heap mit new aus der Funktion heraus anfordere, wird dieser Speicher doch automatisch nach Beendigung der Funktion wieder freigegeben oder?</p>
</blockquote>
<p>Nein. Was du mit new anforderst musst du auch selber wieder freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1612786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1612786</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 10 Nov 2008 14:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Wed, 12 Nov 2008 09:40:07 GMT]]></title><description><![CDATA[<p>So, danke erstmal an Braunstein für den Tipp.</p>
<p>Nun hänge ich jedoch bei der Rückgabe des vectors an die main Funktion.</p>
<p>Ich hätte gern den Vector als Zeiger, nur sind alle meine Versuche einen zeiger mit</p>
<pre><code class="language-cpp">vector&lt;string&gt; *vec;
</code></pre>
<p>zu erzeugen fehlgeschlagen.</p>
<p>Wenn mir wer nen tipp geben könnte.</p>
<p>Hier mal die reader funktion mit vectoren:</p>
<pre><code class="language-cpp">bool readFile (string fileIn){

	fstream file;
	file.open ((fileIn).c_str(),ios::in);
	if (file.fail())
	{
		cout &lt;&lt; &quot;Error beim oeffnen der datei: &quot; &lt;&lt; (fileIn).c_str() &lt;&lt; endl;
		perror(&quot;Read error&quot;);
		return false;
	}

	// Mehrdimensionales array erstellen
	vector&lt;vector&lt;string&gt; &gt; vAuftrag;	
	vAuftrag.reserve(100);

	string tmp;
	while(!file.eof() ) {

		vector &lt;string&gt; spalten; // Kann ich diesen vector einfach immer neu erstellen oder muss man den auch wieder löschen?

		getline(file, tmp); // Zeile lesen

		size_t x=0;
		size_t p=0;
		int i=0;
		string auftrag[13];
		// ; suchen und Werte trennen
		while(x=tmp.find(';',x)){
			if (x==string::npos){
				break;
			}

			//Daten in die zweite ebene schreiben
			spalten.push_back(tmp.substr(p, (x-p)));

			i++;
			x++;
			p=x;		
	}
	//Daten in die erste ebene schreiben
	vAuftrag.push_back(spalten);

}

system(&quot;PAUSE&quot;);

file.close();
return true;
}
</code></pre>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613425</guid><dc:creator><![CDATA[iPanic]]></dc:creator><pubDate>Wed, 12 Nov 2008 09:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Wed, 12 Nov 2008 10:25:02 GMT]]></title><description><![CDATA[<p>Nachdem mir der Verbindungsabbruch das Posting zerstört hat, noch ein Versuch...</p>
<p>iPanic schrieb:</p>
<blockquote>
<p>Ich hätte gern den Vector als Zeiger...</p>
</blockquote>
<p>Mach dir das Leben nicht schwerer als es ist. Kopien können wenn sie häufig gemacht werden zwar teuer sein, aber optimiere niemals wenn du nicht weißt das es ein Problem darstellt...</p>
<p>Die üblichen Varianten:</p>
<pre><code class="language-cpp">// Intuitiv, aber ggf. (keine Ahnung wie gut Compiler wegoptimieren) mit einer Kopie:
std::vector&lt;std::string&gt; GetStringVector()
{
    std::vector&lt;std::string&gt; result;
    result.push_back(&quot;a&quot;);
    result.push_back(&quot;b&quot;);
    return result;
}

// Weniger intuitiv, aber ohne Kopie (wobei ich das intuitiv meist mehr betrachte
// solange es ein Programm nicht merklich verlangsamt)
void GetStringVector(std::vector&lt;std::string&gt; &amp; result)
{
    result.push_back(&quot;a&quot;);
    result.push_back(&quot;b&quot;);
}

// Verwendung
int main()
{
    // Variante 1:
    std::vector&lt;std::string&gt; v1 = GetStringVector();

    // Variante 1:
    std::vector&lt;std::string&gt; v2;
    GetStringVector(v2);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1613458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613458</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 12 Nov 2008 10:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Wed, 12 Nov 2008 10:33:26 GMT]]></title><description><![CDATA[<p>super, DANKE!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613465</guid><dc:creator><![CDATA[iPanic]]></dc:creator><pubDate>Wed, 12 Nov 2008 10:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Wed, 12 Nov 2008 11:15:58 GMT]]></title><description><![CDATA[<p>Na, die zweite Variante würde ich aber anders benennen. Die Gettet ja schließlich keinen Vector:</p>
<pre><code class="language-cpp">void editStringVector(std::vector&lt;std::string&gt; &amp; result)
{
    result.push_back(&quot;a&quot;);
    result.push_back(&quot;b&quot;);
}
</code></pre>
<p>Oder <code>fillStringVector</code> wäre auch möglich.</p>
<p>Funktionen so benennen, wie sie sich verhalten. <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/1613500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613500</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Wed, 12 Nov 2008 11:15:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Wed, 12 Nov 2008 11:26:20 GMT]]></title><description><![CDATA[<p>Dann würden viele meiner Funktionen aber gleich heißen: doSomeUglyShitNooneUnderstandsAnymoreWithSomeUnidentifiedDataAndPleaseDontCrash(...)</p>
<p>Unleserlich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613509</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 12 Nov 2008 11:26:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Dynamisches array erzeugen und weitergeben -&amp;gt; Anfänger on Wed, 12 Nov 2008 11:38:16 GMT]]></title><description><![CDATA[<p>Nö, dann machen deine Funktionen einfach zuviel... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613521</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Wed, 12 Nov 2008 11:38:16 GMT</pubDate></item></channel></rss>