<?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[frage zur dynamischen variablen erzeugung]]></title><description><![CDATA[<p>Erstmal guten abend (so viel zeit muss sein ;)),</p>
<p>Ich möchte eine Datei einlesen (for oder while schleife, oder gibts ne Möglichkeit ohne Schleife?), welche eine unbestimmte anzahl von wörtern, eins pro zeile, enthält.</p>
<p>Die Wörter sollen dann jedes in eine Variable gespeichert werden. (Soweit dürfte es kein Problem sein.)<br />
Die Variablen müssen nach der Beendignung der Schleife noch existieren (aber jetzt schon, soweit ich weis verlieren Variablen nach Beendigung der Funktion, in der sie erzeugt wurden (also in der for oder while Schleife), ihr Gültigkeit.).</p>
<p>Und das beste is, ein Thread der später im Programm gestartet wird muss Zugriff auf jede dieser Variablen haben.</p>
<p>Wie stell ich das an?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

main()
{    
    // Als erstes muss ich die Datei einlesen !
    // Objet eingabe erzeugen
    fstream eingabe;
    // Datei Öffnen
    eingabe.open(&quot;Datei.txt&quot;,ios::in);
    // an Datei Anfang springen
    eingabe.seekg(0L,ios::beg);

    // Auslesen beginnen und erstes Zeichen holen
    while (!eingabe.eof())
    {
        // so, und jetzt ?
        // jetzt müsste jede Zeile bis zum \n oder \0 in der Datei ausgelesen werden, 
        // in einer Variable abgelegt werden und für den Rest vom Programm verfügbar gemacht werden (Thread).
    }

~~~~

    //Thread wird erzeugt

~~~~

   // Programm beenden und alle dynamischen Variablen freigeben
   free(...);
   exit(0);
}
</code></pre>
<p>Kann mir da jemand helfen das zu lösen oder mir nen Denkanstoss geben?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128983/frage-zur-dynamischen-variablen-erzeugung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 01:43:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128983.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Dec 2005 23:59:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Thu, 08 Dec 2005 23:59:34 GMT]]></title><description><![CDATA[<p>Erstmal guten abend (so viel zeit muss sein ;)),</p>
<p>Ich möchte eine Datei einlesen (for oder while schleife, oder gibts ne Möglichkeit ohne Schleife?), welche eine unbestimmte anzahl von wörtern, eins pro zeile, enthält.</p>
<p>Die Wörter sollen dann jedes in eine Variable gespeichert werden. (Soweit dürfte es kein Problem sein.)<br />
Die Variablen müssen nach der Beendignung der Schleife noch existieren (aber jetzt schon, soweit ich weis verlieren Variablen nach Beendigung der Funktion, in der sie erzeugt wurden (also in der for oder while Schleife), ihr Gültigkeit.).</p>
<p>Und das beste is, ein Thread der später im Programm gestartet wird muss Zugriff auf jede dieser Variablen haben.</p>
<p>Wie stell ich das an?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

main()
{    
    // Als erstes muss ich die Datei einlesen !
    // Objet eingabe erzeugen
    fstream eingabe;
    // Datei Öffnen
    eingabe.open(&quot;Datei.txt&quot;,ios::in);
    // an Datei Anfang springen
    eingabe.seekg(0L,ios::beg);

    // Auslesen beginnen und erstes Zeichen holen
    while (!eingabe.eof())
    {
        // so, und jetzt ?
        // jetzt müsste jede Zeile bis zum \n oder \0 in der Datei ausgelesen werden, 
        // in einer Variable abgelegt werden und für den Rest vom Programm verfügbar gemacht werden (Thread).
    }

~~~~

    //Thread wird erzeugt

~~~~

   // Programm beenden und alle dynamischen Variablen freigeben
   free(...);
   exit(0);
}
</code></pre>
<p>Kann mir da jemand helfen das zu lösen oder mir nen Denkanstoss geben?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937798</guid><dc:creator><![CDATA[Code-Yunkee]]></dc:creator><pubDate>Thu, 08 Dec 2005 23:59:34 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 00:29:43 GMT]]></title><description><![CDATA[<p>Code-Yunkee schrieb:</p>
<blockquote>
<p>Kann mir da jemand helfen das zu lösen oder mir nen Denkanstoss geben?</p>
</blockquote>
<p>Schau mal in die FAQ, std::vector und Co helfen Dir weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937805</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Fri, 09 Dec 2005 00:29:43 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 00:41:22 GMT]]></title><description><![CDATA[<p>Hab in der FAQ nix gefunden, hast mir da nen link ? Oder ne deutsche Lektüre dazu im Netz ?<br />
Hab umehrlich zu sein noch nie was mit vector zu tun gehabt.</p>
<p>Thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937806</guid><dc:creator><![CDATA[Code-Yunkee]]></dc:creator><pubDate>Fri, 09 Dec 2005 00:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 01:11:12 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html" rel="nofollow">Hier</a> wird vector gemeinsam mit fstream verwendet. Eine genauere Erklärung findest Du in jedem brauchbaren C++-Buch.</p>
<p>Im Grunde brauchst Du nicht mehr zu tun, als folgendes:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; zeugs;
zeugs.push_back(7);
zeugs.push_back(4);
zeugs.push_back(9);
zeugs.push_back(2);
</code></pre>
<p>Und in zeugs[0] bis zeugs[3] findest Du die eingefügten Werte wieder.<br />
Aber wie gesagt, lies dazu lieber im C++-Buch Deiner Wahl nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937812</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Fri, 09 Dec 2005 01:11:12 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 02:41:36 GMT]]></title><description><![CDATA[<p>ok, hab jetzt soweit verstanden wie das mit vector funzt.</p>
<p>nur wenn ich jetzt eine vector&lt;string&gt; variable global deklarier, wie frag ich dann zb das erste<br />
element ab?</p>
<pre><code class="language-cpp">vector&lt;string&gt; wort;

void WortLaden()
{    

~~
wort mit mir werten versogt
~~

	for (int a = 0; a &lt; 5; a++)
	{
		cout &lt;&lt; wort.at(a) &lt;&lt; endl;
	}
}
</code></pre>
<p>Bekomm ich folgende Meldung vom Compiler:</p>
<p>error C2679: Binaerer Operator '&lt;&lt;' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;c<br />
har&gt; &gt;' akzeptiert (oder keine geeignete Konvertierung moeglich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937814</guid><dc:creator><![CDATA[Code-Yunkee]]></dc:creator><pubDate>Fri, 09 Dec 2005 02:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 03:07:26 GMT]]></title><description><![CDATA[<p>ich bin ein wenig überrascht, denn ob du es global machst oder nicht,<br />
sollte imho nichts daran ändern, dass es einen operator &lt;&lt; für std::string gibt.<br />
Naja der fehler gehta auch vom binären &lt;&lt; aus, was ich merkwürdig finde.<br />
Ich hab grad das hier getestet</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;vector&gt;
#include&lt;string&gt;

int main(){
	std::vector&lt;std::string&gt; zeugs;
	zeugs.push_back(&quot;7&quot;);
	zeugs.push_back(&quot;4&quot;);
	zeugs.push_back(&quot;9&quot;);
	zeugs.push_back(&quot;2&quot;);
    for (int a = 0; a &lt; 4;++a)
    {
        std::cout &lt;&lt; zeugs.at(a) &lt;&lt; std::endl;
    } 

}
</code></pre>
<p>und es lief völlig einwandfrei durch. ob der vector nun in der main oder global deklariert war...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937815</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Fri, 09 Dec 2005 03:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 10:56:15 GMT]]></title><description><![CDATA[<p>ok, das funzt.</p>
<p>hatte vergessen die &lt;string&gt; einzubinden.</p>
<p>Jetzt hab ich mal ne ganz andere frage.</p>
<p>Ich habe bis jetzt in C programmiert und seh grad dass es sich von C++ doch sehr stark unterscheidet.</p>
<p>in C++ verwendet man also eher string als char oder seh ich das jetzt falsch ?</p>
<p>wenn man mit vector und string ja eigentlich alles machen kann was ein char bzw array kann,<br />
wozu braucht man dann noch char ? Für einzelne Zeichen ?</p>
<p>ich habe in dem Code den ich schreibe unter den #includes using namespace std; stehen. Du allerdings nicht, dafür schreibst du jedesmal std:: vor die funktion. Welchen Unterschied macht das ?</p>
<p>Und nochwas *fg*, in C verwende ich sprintf um Text und andere Variablen in eine bestimmte Variable zu schreiben.</p>
<pre><code class="language-cpp">sprintf(constr,&quot;%s&quot;,test);
</code></pre>
<p>Wie lautet das eqvivalent für C++ ? Oder ist auch hier sprintf zu verwenden ?<br />
Wenn ja, welchen Platzhalter verwendet man dann für ein vector element ? mit %s stürzt das Prgramm ab ?</p>
<pre><code class="language-cpp">sprintf(constr,&quot;%s&quot;,v.at(1)); // Stürzt ab
</code></pre>
<p>Das zusammenschneiden bis string geht ja über das + , aber wenn ich ein element eines vectors hinzufügen will, geht das ja nich:</p>
<pre><code class="language-cpp">string constr = &quot;Element 1 von vecotr v &quot; + v.at(1);
</code></pre>
<p>Das bringt mir dann aber : Zeiger können nicht addiert werden.</p>
<p>Fragen über Fragen.</p>
<p>Danke schonmal dass ihr nem C++ Neuling bißchen auf die Sprünge helft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937994</guid><dc:creator><![CDATA[Code-Yunkee]]></dc:creator><pubDate>Fri, 09 Dec 2005 10:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 10:54:30 GMT]]></title><description><![CDATA[<blockquote>
<p>in C++ verwendet man also eher string als char oder seh ich das jetzt falsch ?</p>
</blockquote>
<p>In 99% der Fälle: Ja.</p>
<blockquote>
<p>wozu braucht man dann noch char ? Für einzelne Zeichen ?</p>
</blockquote>
<p>Manchmal meint einer, der vector oder der string frisst zuviel Speicher und Ressourcen, dann nimmt er wieder char[]. Aber char kann z.B. ganz nützlich sein, um einen einzelnen Buchstaben einzulesen, vgl. Menüauswahl.</p>
<blockquote>
<p>Wie lautet das eqvivalent für C++ ? Oder ist auch hier sprintf zu verwenden ?</p>
</blockquote>
<p>Nope, es gibt stringstreams, siehe FAQ (&quot;Einmal Zahl nach String&quot; oder so).</p>
<p>Und vector kann man so ausgeben:</p>
<pre><code class="language-cpp">vector&lt;int&gt; myVec;
for (int i=0;i&lt;10;++i) {
  myVec.push_back(i);
  cout&lt;&lt;myVec[i]&lt;&lt;'\n';
};

//Oder mit Iteratoren
for (vector&lt;int&gt;::iterator i=myVec.begin();i!=myVec.end();++i)
  cout&lt;&lt;*i&lt;&lt;'\n';
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/938003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938003</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Fri, 09 Dec 2005 10:54:30 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 11:03:39 GMT]]></title><description><![CDATA[<p>std::vectors kann man auch via std::copy nach std::cout ausgeben, das dürfte wohl am elegantesten und schnellsten sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938008</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Fri, 09 Dec 2005 11:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 11:30:13 GMT]]></title><description><![CDATA[<p>wie ich den vector ausgebe, hab ich mittlerweile begriffen <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>aber wie das mit den stringstreams läuft hab ich net verstanden.</p>
<p>Sagen wie mal ich möchte das 3 element von vector v in einen string kopieren.</p>
<p>der string soll nacher das ausgeben: Element 3 von vector v ist Hallo.</p>
<p>ich würde jetzt davon ausgehen, dass man das so macht:</p>
<pre><code class="language-cpp">vector&lt;string&gt; v;
v.push_back(&quot;Test&quot;);
v.push_back(&quot;Ich&quot;);
v.push_back(&quot;Hallo&quot;);

string Ausgabe = &quot;Das 3. Element von vector v ist &quot; + v.at(3);

cout &lt;&lt; Ausgabe &lt;&lt; endl;
</code></pre>
<p>Ich brauch das in nem string weil der string nachher weitervearbeitet wird.</p>
<p>Aber wie gesagt, dann kommt Zeiger kann nicht addiert werden.</p>
<p>Wie mach ich das jetzt mit stringstreams ?</p>
<pre><code class="language-cpp">stringstream str;

str &lt;&lt; &quot;Das 3. Element von vector v ist &quot; + pws.at(a);

cout &lt;&lt; &quot;str: &quot; &lt;&lt; str.str() &lt;&lt; endl;
</code></pre>
<p>Das geht ja auch nich. Man man man, wäre ich doch bloß bei C geblieben <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>
]]></description><link>https://www.c-plusplus.net/forum/post/938012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938012</guid><dc:creator><![CDATA[Code-Yunkee]]></dc:creator><pubDate>Fri, 09 Dec 2005 11:30:13 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 11:36:42 GMT]]></title><description><![CDATA[<p>Kleines Beispiel</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;

using namespace std;

int main() {
   vector&lt;string&gt; v;
   v.push_back(&quot;Test&quot;);
   v.push_back(&quot;Ich&quot;);
   v.push_back(&quot;Hallo&quot;);

   stringstream str;
   copy(v.begin(), v.end(), ostream_iterator&lt;string&gt; (str, &quot;,&quot;));
   cout &lt;&lt; str.str() &lt;&lt; endl; 
   str.str(&quot;&quot;);
   str &lt;&lt; v[1] &lt;&lt; &quot; sage &quot; &lt;&lt; v[2] &lt;&lt; endl;
   string s = str.str();
   cout &lt;&lt; s;
   return 0;
}
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/938032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938032</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Fri, 09 Dec 2005 11:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 11:44:47 GMT]]></title><description><![CDATA[<p>Code-Yunkee schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vector&lt;string&gt; v;
v.push_back(&quot;Test&quot;);
v.push_back(&quot;Ich&quot;);
v.push_back(&quot;Hallo&quot;);

string Ausgabe = &quot;Das 3. Element von vector v ist &quot; + v.at(3);

cout &lt;&lt; Ausgabe &lt;&lt; endl;
</code></pre>
</blockquote>
<p>Kleiner Hinweis: Auch in Vektoren beginnt der Index bei 0 - d.h. du versuchst auf ein (nicht existierendes) viertes Element zuzugreifen.<br />
Ich brauch das in nem string weil der string nachher weitervearbeitet wird.</p>
<blockquote>
<p>Wie mach ich das jetzt mit stringstreams ?</p>
</blockquote>
<p>Wenn du die Daten direkt ausgeben willst, brauchst du den Umweg über stringstream übrigens nicht - dafür gibt es cout:</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;Das 3. Element von v ist &quot;&lt;&lt;v.at(2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/938040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938040</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 09 Dec 2005 11:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to frage zur dynamischen variablen erzeugung on Fri, 09 Dec 2005 12:09:31 GMT]]></title><description><![CDATA[<p>ok, hab ich jetzt begriffen <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>1000 Danke für eure Hilfe.</p>
<p>Hab zwar noch eine Frage, die hat aber nichts mit diesem Thema zutun und deshalb neuer Thread <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>
]]></description><link>https://www.c-plusplus.net/forum/post/938067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/938067</guid><dc:creator><![CDATA[Code-Yunkee]]></dc:creator><pubDate>Fri, 09 Dec 2005 12:09:31 GMT</pubDate></item></channel></rss>