<?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-array erstellen aber mit char*]]></title><description><![CDATA[<p>hallo community,<br />
also ich benutzt den devc++ compiler und dort ist es nicht möglich string als datentyp zu verwenden.<br />
Daher benutzt ich char* var;<br />
was eigentlich das selbe ist<br />
nunja jetzt möchte ich aber ein stringarray erstellen und das dann dynamisch erweiteren</p>
<p>also habe ich mir gedacht mache folgendes:<br />
char *menuPunkt[0]; //einzelne Menüpunkte</p>
<p>dann habe ich eine methode in meiner klasse, die einen neuen menüpunkt erzeugt</p>
<p>/***| neuer Menüpunkt |*<em><em>/<br />
void Cmenu::set_menupunkt(char</em> punkt)<br />
{<br />
anzMenupunkt++;<br />
menuPunkt[anzMenupunkt]=(char</em>) malloc((strlen(punkt)+1)*sizeof(char));<br />
}</p>
<p>aber irgendwie funktioniert das nicht so.</p>
<p>ich will halt, dass wenn ich einen neuen menupunkt erstellen ein neuer index dazu kommt<br />
aber halt alles dynamisch, damit der speicherplatz klein bleibt<br />
hoffe ihr versteht mein anliegen, bekomme hie rnoch ne krise:)</p>
<p>danke für jede antwort</p>
<p>bye</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/166292/string-array-erstellen-aber-mit-char</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 07:43:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166292.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Nov 2006 20:23:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to string-array erstellen aber mit char* on Mon, 27 Nov 2006 20:23:35 GMT]]></title><description><![CDATA[<p>hallo community,<br />
also ich benutzt den devc++ compiler und dort ist es nicht möglich string als datentyp zu verwenden.<br />
Daher benutzt ich char* var;<br />
was eigentlich das selbe ist<br />
nunja jetzt möchte ich aber ein stringarray erstellen und das dann dynamisch erweiteren</p>
<p>also habe ich mir gedacht mache folgendes:<br />
char *menuPunkt[0]; //einzelne Menüpunkte</p>
<p>dann habe ich eine methode in meiner klasse, die einen neuen menüpunkt erzeugt</p>
<p>/***| neuer Menüpunkt |*<em><em>/<br />
void Cmenu::set_menupunkt(char</em> punkt)<br />
{<br />
anzMenupunkt++;<br />
menuPunkt[anzMenupunkt]=(char</em>) malloc((strlen(punkt)+1)*sizeof(char));<br />
}</p>
<p>aber irgendwie funktioniert das nicht so.</p>
<p>ich will halt, dass wenn ich einen neuen menupunkt erstellen ein neuer index dazu kommt<br />
aber halt alles dynamisch, damit der speicherplatz klein bleibt<br />
hoffe ihr versteht mein anliegen, bekomme hie rnoch ne krise:)</p>
<p>danke für jede antwort</p>
<p>bye</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182694</guid><dc:creator><![CDATA[swissboy]]></dc:creator><pubDate>Mon, 27 Nov 2006 20:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to string-array erstellen aber mit char* on Mon, 27 Nov 2006 20:31:01 GMT]]></title><description><![CDATA[<p>nimm std::vector, das erspart dir viel Zeit und Arbeit <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>
<pre><code class="language-cpp">#include &lt;vector&gt;

std::vector&lt;char*&gt; menuepunkte;

//...

void neuerMenupunkt(char* punkt) {
  menuepunkte.push_back(punkt); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1182702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182702</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Mon, 27 Nov 2006 20:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to string-array erstellen aber mit char* on Mon, 27 Nov 2006 20:38:13 GMT]]></title><description><![CDATA[<p>swissboy schrieb:</p>
<blockquote>
<p>hallo community,<br />
also ich benutzt den devc++ compiler und dort ist es nicht möglich string als datentyp zu verwenden.</p>
</blockquote>
<p>Dev-C++ ist eine IDE, kein Compiler. Der ist wahrscheinlich MinGW und hat (wie jeder C++-Compiler) sehr wohl einen &quot;Datentyp&quot; für Strings, wenn auch nicht fest eingebaut. Du musst dafür den entsprechenden Header mit &quot;#include &lt;string&gt;&quot; einbinden, dann steht dir std::string mit all seinen Bequemlichkeiten zur Verfügung.</p>
<p>Zu Menüs: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-152690.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-152690.html</a></p>
<p>Lern mal fleißig weiter C++ (!) und schau dir die Standardbibliothek genauer an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182705</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 27 Nov 2006 20:38:13 GMT</pubDate></item><item><title><![CDATA[Reply to string-array erstellen aber mit char* on Mon, 27 Nov 2006 20:47:09 GMT]]></title><description><![CDATA[<p>ich glaube ihr versteht nicht mein problem<br />
das mit den strings ist ja egal<br />
da gibt es haufen mthoden die zumachen<br />
mir geht es um die speichererweiterung.<br />
damit haut es nicht ganz hin<br />
ich habe am anfang nur ein index<br />
aber bei jedem neuen menüpunkt soll ein index dazu kommen</p>
<p>hoffe wisst wie ich das meine</p>
<p>byee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182710</guid><dc:creator><![CDATA[swissboy]]></dc:creator><pubDate>Mon, 27 Nov 2006 20:47:09 GMT</pubDate></item><item><title><![CDATA[Reply to string-array erstellen aber mit char* on Mon, 27 Nov 2006 20:57:08 GMT]]></title><description><![CDATA[<p>Erstens: Dein Array ist null Elemente lang - da passt nichtmal ein String rein (auch wenn Du für den String selbst noch so viel Speicher reservierst).<br />
Zweitens: Es ist garantiert, dass sizeof(char) eins ist.<br />
Drittens: In C++ nimmt man new/delete (und in C castet man den Rückgabewert von malloc nicht)</p>
<p>Wenn Du auf dem Gewurschtel bestehst, musst Du vorher für den Array selbst Speicher reservieren, und dann für jedes Element nochmal:</p>
<pre><code class="language-cpp">char** menuPunkt = 0;
int anzMenuPunkt = 0;

{
  char** newMenuPunkt = new char*[ anzMenuPunkt + 1 ];
  std::copy( menuPunkt, menuPunkt + anzMenuPunkte, newMenuPunkt );
  menuPunkt[ anzMenuPunkt ] = new char[ std::strlen( punkt ) + 1 ];
  std::strcpy( menuPunkt[ anzMenuPunkt ], punkt );
  delete[] menuPunkt;
  menuPunkt = newMenuPunkt;
  ++anzMenuPunkt;
}
</code></pre>
<p>Aber std::string und std::vector machen die Sache <strong>bissi</strong> einfacher <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/1182718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182718</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 27 Nov 2006 20:57:08 GMT</pubDate></item><item><title><![CDATA[Reply to string-array erstellen aber mit char* on Mon, 27 Nov 2006 21:05:39 GMT]]></title><description><![CDATA[<p>Hmm das ist immer ein widerliches Zeigergeschubse...</p>
<p>naja ... es geht aber so:</p>
<pre><code class="language-cpp">class CMenu 
{
public:
    void                        AddItem(const char* const);

private:
    char**			m_ppszItems;
    unsigned short	        m_nItemCount;
//...
}
</code></pre>
<pre><code class="language-cpp">CMenu::CMenu(void) : m_nItemCount(0), m_ppszItems(NULL)
{
}

CMenu::~CMenu(void)
{
    if (m_ppszItems != NULL)
    {
        delete [] m_ppszItems;
        m_ppszItems = NULL;
    }

    m_nItemCount = 0;
}
</code></pre>
<p>So ... damit haben wie eine Variable die die Anzahl der Items zählt und eine die auf die zeigt ... im Destruktor räumen wir halt wieder auf ...</p>
<pre><code class="language-cpp">void CMenu::AddItem(const char* const lpszItem)
{
	char** ppszTmp = NULL; // Temp char pointer pointer

	if (m_ppszItems != NULL) // Haben wir schon Items?
	{
		ppszTmp = new char*[m_nItemCount]; // ja also tmp genauso groß wie den momentanen machen ...
		memcpy(ppszTmp, m_ppszItems, sizeof(char*) * m_nItemCount); // alles rüberkopieren
	}

	delete [] m_ppszItems; // den alten löschen
	m_ppszItems = new char*[m_nItemCount + 1]; // einen um 1 größeren erstellen

	if (ppszTmp != NULL) // wenn schon items da waren diese jetzt wieder reinkopieren
		memcpy(m_ppszItems, ppszTmp, sizeof(char*) * m_nItemCount);

	delete [] ppszTmp; // tmp wieder freigeben 

	unsigned int nLen		= (unsigned int)lstrlen(lpszItem) + 1; // die länge des hinzuzufügenden char-arrays ermitteln (+ 1 für '\0')
	m_ppszItems[m_nItemCount]	= new char[nLen]; // nen char array mit dieser größe anlegen
	memcpy(m_ppszItems[m_nItemCount], lpszItem, nLen); // da dann den string im mem reinkopieren ...

	++m_nItemCount;
}
</code></pre>
<p>Damit wird nen Item hinzugefügt...</p>
<p>[edit] <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> zu spät <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="😞"
    /> [/edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182724</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 27 Nov 2006 21:05:39 GMT</pubDate></item></channel></rss>