<?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[Fehler bei char Felder]]></title><description><![CDATA[<p>Hallo ich habe ein Problem mit einem Programm irgendwie deklariert der Compiler nen Fehler in Zeile 67. Weis nicht was ich noch ausprobieren kann.</p>
<p>Das Programm soll Postleitzahlen mitderen Orten in einem array ablegen.<br />
Das ganze nach Postleitzahlen sortiert.</p>
<pre><code class="language-cpp">char HEAD[]=&quot;Aufgabe Nr. 14 - Namensverwaltung/Dynamisch verkettete Listen/Felder - coded by Christian Keiser \n&quot;;

#include &lt;conio.h&gt;		// Einbindung der Bibliothek Conio für getch()
#include &lt;iostream&gt;		// Einbindung der Bibliothek iostream für cout, using namespace std;
#include &lt;process.h&gt;	// for exit()

using namespace std;
const int Size = 1000;
 /*Erstellung einer Struktur*/
struct tList 
{
	char Ortskennung [10][Size];
	tList* next;
};
 /*Deklaration der verschiedenen Funktionen*/
void einfuegen (tList *&amp; pTop);
void ausgabe (tList *&amp; pTop);
/*Beginn des Hauptprogramms, von hier aus werden alle Funktionen aufgerufen*/
int main()										
{																			
	cout&lt;&lt; HEAD &lt;&lt;endl;							// Headzeile wird ausgegeben
	struct tList *pTop = NULL;
do{		
		char Verarbeitung = '-';			// Deklaration einer Variablen
		cout&lt;&lt;&quot;\nBearbeitung wie folgt! \n(e) Einfuegen \n(z) Liste ausgeben \n(q) Beenden \n\n&quot; ;
		cout&lt;&lt;&quot;Geben sie jetzt das zeichen fuer die verarbeitung ein:\t&quot; ;								
		Verarbeitung = _getch();				// Zeichen von der Tastatur wird eingelesen
		cout &lt;&lt; Verarbeitung&lt;&lt;endl&lt;&lt;endl;
			/*Auswahlmenü*/
			if(Verarbeitung == 'd'){			// Wenn Verarbeitung durch Tastatur = d dann
				einfuegen (pTop);				// die hier stehenden Funktionen ausführen	
			}else if (Verarbeitung == 'z'){		// Wenn Verarbeitung durch Tastatur = z dann					
				ausgabe (pTop);					// die hier stehende Funktion ausführen	
			}else if (Verarbeitung == 'q'){		// Wenn Verarbeitung durch Tastatur = q dann					
				exit(0);						// den Befehl exit (Beenden) ausführen (#iostream)	
			}
		cout&lt;&lt;&quot;\n&quot; ;
		}while(1);							// Endlosschleife
}

void einfuegen (tList *&amp; pTop)
{	
	if (!pTop)
	{
		pTop = new tList;												// Gruppen erstellen
		pTop-&gt;next = NULL;
	}
	cout&lt;&lt;&quot;Zum Abruch eine negative zahl eingeben eingeben\n\n&quot; ;		// Textausgabe
	do{
		char Ort[20]=&quot;0&quot;;												// Deklaration von Ort anlegen

		cout&lt;&lt;&quot;Geben Sie bitte eine Postleitzahl mit Ort ein! \n&quot; ;	// Textausgabe
		cout&lt;&lt;&quot;Zum Beispiel 71034 Böblingen! \nOrtskennung\t&quot; ;		// Textausgabe
		cin&gt;&gt;Ort;												// Texteingabe
		for (int i=0; i&lt;=10; i++)
		{// Schleife geht alle Gruppen durch
			{
				int e=0;
				pTop-&gt;Ortskennung[i][e] = i;					
			}
		}
		for (int i=0; i&lt;=10; i++)
		{// Schleife geht alle Gruppen durch
			if (Ort[1] == i)					// Wenn die Zahl gleichgroß wie .. ist, dann
			{
				int e=0;
				pTop-&gt;Ortskennung[i][e] = Ort;	
				e++;
			}
		}
		_getch();
	}while(_getch() !='q');																			
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/216850/fehler-bei-char-felder</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 01:28:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216850.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Jun 2008 17:00:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 19:46:14 GMT]]></title><description><![CDATA[<p>Hallo ich habe ein Problem mit einem Programm irgendwie deklariert der Compiler nen Fehler in Zeile 67. Weis nicht was ich noch ausprobieren kann.</p>
<p>Das Programm soll Postleitzahlen mitderen Orten in einem array ablegen.<br />
Das ganze nach Postleitzahlen sortiert.</p>
<pre><code class="language-cpp">char HEAD[]=&quot;Aufgabe Nr. 14 - Namensverwaltung/Dynamisch verkettete Listen/Felder - coded by Christian Keiser \n&quot;;

#include &lt;conio.h&gt;		// Einbindung der Bibliothek Conio für getch()
#include &lt;iostream&gt;		// Einbindung der Bibliothek iostream für cout, using namespace std;
#include &lt;process.h&gt;	// for exit()

using namespace std;
const int Size = 1000;
 /*Erstellung einer Struktur*/
struct tList 
{
	char Ortskennung [10][Size];
	tList* next;
};
 /*Deklaration der verschiedenen Funktionen*/
void einfuegen (tList *&amp; pTop);
void ausgabe (tList *&amp; pTop);
/*Beginn des Hauptprogramms, von hier aus werden alle Funktionen aufgerufen*/
int main()										
{																			
	cout&lt;&lt; HEAD &lt;&lt;endl;							// Headzeile wird ausgegeben
	struct tList *pTop = NULL;
do{		
		char Verarbeitung = '-';			// Deklaration einer Variablen
		cout&lt;&lt;&quot;\nBearbeitung wie folgt! \n(e) Einfuegen \n(z) Liste ausgeben \n(q) Beenden \n\n&quot; ;
		cout&lt;&lt;&quot;Geben sie jetzt das zeichen fuer die verarbeitung ein:\t&quot; ;								
		Verarbeitung = _getch();				// Zeichen von der Tastatur wird eingelesen
		cout &lt;&lt; Verarbeitung&lt;&lt;endl&lt;&lt;endl;
			/*Auswahlmenü*/
			if(Verarbeitung == 'd'){			// Wenn Verarbeitung durch Tastatur = d dann
				einfuegen (pTop);				// die hier stehenden Funktionen ausführen	
			}else if (Verarbeitung == 'z'){		// Wenn Verarbeitung durch Tastatur = z dann					
				ausgabe (pTop);					// die hier stehende Funktion ausführen	
			}else if (Verarbeitung == 'q'){		// Wenn Verarbeitung durch Tastatur = q dann					
				exit(0);						// den Befehl exit (Beenden) ausführen (#iostream)	
			}
		cout&lt;&lt;&quot;\n&quot; ;
		}while(1);							// Endlosschleife
}

void einfuegen (tList *&amp; pTop)
{	
	if (!pTop)
	{
		pTop = new tList;												// Gruppen erstellen
		pTop-&gt;next = NULL;
	}
	cout&lt;&lt;&quot;Zum Abruch eine negative zahl eingeben eingeben\n\n&quot; ;		// Textausgabe
	do{
		char Ort[20]=&quot;0&quot;;												// Deklaration von Ort anlegen

		cout&lt;&lt;&quot;Geben Sie bitte eine Postleitzahl mit Ort ein! \n&quot; ;	// Textausgabe
		cout&lt;&lt;&quot;Zum Beispiel 71034 Böblingen! \nOrtskennung\t&quot; ;		// Textausgabe
		cin&gt;&gt;Ort;												// Texteingabe
		for (int i=0; i&lt;=10; i++)
		{// Schleife geht alle Gruppen durch
			{
				int e=0;
				pTop-&gt;Ortskennung[i][e] = i;					
			}
		}
		for (int i=0; i&lt;=10; i++)
		{// Schleife geht alle Gruppen durch
			if (Ort[1] == i)					// Wenn die Zahl gleichgroß wie .. ist, dann
			{
				int e=0;
				pTop-&gt;Ortskennung[i][e] = Ort;	
				e++;
			}
		}
		_getch();
	}while(_getch() !='q');																			
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1538071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538071</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Sun, 29 Jun 2008 19:46:14 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 17:55:27 GMT]]></title><description><![CDATA[<p>Und wärst du noch so frei uns zu sagen, was das für eine Melung ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538097</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 29 Jun 2008 17:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 17:59:57 GMT]]></title><description><![CDATA[<p>Erstens mal wäre es extrem hilfreich, wenn du deinen Code ein bisschen organisieren könntest. Dann wären auch Referenzen auf Zeiger und solche Unschönheiten nicht nötig. Deine Einrückungen und Klammersetzungen sind teilweise auch grauenhaft.</p>
<p>Zweitens sind wir hier im C++-Forum, weshalb quälst du dich mit <code>printf</code> , verketteten Listen und char-Arrays? <code>std::string</code> oder <code>std::list&lt;&gt;</code> wären z.B. sehr hilfreich.</p>
<p>Drittens ist bei dir Ortskennung ein <code>char**</code> , und du weist dem <code>Ortskennung[i][e]</code> (also <code>char</code> ) einen <code>Ort</code> (also <code>char*</code> ) zu. Wenn du die Fehlermeldung gepostet hättest, wäre dir das wahrscheinlich selber aufgefallen.</p>
<p>Viertens: Du benötigst die meisten deiner eingebundenen Bibliotheken gar nicht.</p>
<p>Strukturier bitte deinen Code und poste nächstes Mal nur relevante Teile, sonst vergeht den Leuten hier die Lust, dir zu helfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538098</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Jun 2008 17:59:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 18:01:44 GMT]]></title><description><![CDATA[<pre><code>1&gt;c:\dokumente und einstellungen\neo\desktop\c++\übungen\aufgabe_listen15\aufgabe_listen15.cpp(63) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1&gt;        c:\programme\microsoft visual studio 9.0\vc\include\stdio.h(306): Siehe Deklaration von 'scanf'
1&gt;c:\dokumente und einstellungen\neo\desktop\c++\übungen\aufgabe_listen15\aufgabe_listen15.cpp(72) : error C2440: '=': 'char [50]' kann nicht in 'char' konvertiert werden
1&gt;        Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
</code></pre>
<p>Hier die Fehlermeldung.</p>
<p>Also das ist ja das Problem ich weis nicht wie ich das umgehen kann. Ich will ja auf jedenfall den Char wert zuweisen. Muss ich das umcasten oder was kann ich da tun und vor allem wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538102</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Sun, 29 Jun 2008 18:01:44 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 18:22:23 GMT]]></title><description><![CDATA[<p>Ich dachte, das wäre aus meinem Beitrag hervorgegangen. Hast du auch die anderen Vorschläge von mir berücksichtigt?</p>
<p>So ginge es, wobei du evtl. noch schauen musst, dass die Dimension übereinstimmt.</p>
<pre><code class="language-cpp">pTop-&gt;Ortskennung[i] = Ort;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1538119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538119</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Jun 2008 18:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 18:35:24 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ich dachte, das wäre aus meinem Beitrag hervorgegangen. Hast du auch die anderen Vorschläge von mir berücksichtigt?</p>
<p>So ginge es, wobei du evtl. noch schauen musst, dass die Dimension übereinstimmt.</p>
<pre><code class="language-cpp">pTop-&gt;Ortskennung[i] = Ort;
</code></pre>
</blockquote>
<p>Nein so geht es nicht.</p>
<p>Also einiges habe ich geändert so wie die Bibliotheken und das print f aber das mit std:: habe ich nicht gemacht da ich das nicht kenne und nicht weis wie es verwendt wird.</p>
<p>Ich will ja zb ereichen das fld[1][0]= die erste Ortskennung bekommt und fld[1][1] die zweite.<br />
in der ersten Zeile stehen die Zahlen 0-9.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538130</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Sun, 29 Jun 2008 18:35:24 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 18:39:08 GMT]]></title><description><![CDATA[<p>Zeig mal bitte das nun auf C++ abgeänderte Programm und die Fehlermeldung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538135</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sun, 29 Jun 2008 18:39:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 18:48:49 GMT]]></title><description><![CDATA[<p>Ist jetzt oben rein editiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538143</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Sun, 29 Jun 2008 18:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 20:45:22 GMT]]></title><description><![CDATA[<p>ChrisTucker schrieb:</p>
<blockquote>
<p>1&gt;c:\dokumente und einstellungen\neo\desktop\c++\übungen\aufgabe_listen15\aufgabe_listen15.cpp(72) : error C2440: '=': 'char [50]' kann nicht in 'char' konvertiert werden<br />
1&gt; Es gibt keinen Kontext, in dem diese Konvertierung möglich ist[/code]</p>
<p>Hier die Fehlermeldung.</p>
<p>Also das ist ja das Problem ich weis nicht wie ich das umgehen kann. Ich will ja auf jedenfall den Char wert zuweisen. Muss ich das umcasten oder was kann ich da tun und vor allem wie?</p>
</blockquote>
<p>In dem du auf std::string umstellst. Wenn du dich mit C quälen willst musst du dich auch mit den C-String funktionen rumquälen (Da gibt es keine Zuweisung mit = für Arrays und extra Funktionen zum Zuweisen/Kopieren von Zeichenliteralen).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538202</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 29 Jun 2008 20:45:22 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 21:04:07 GMT]]></title><description><![CDATA[<p>Also verstehe ich das richtig das ich es gar nicht anderst lösen kann?</p>
<p>Was muss ich denn da dann alles genau ersetzen? wie muss dass aussehen wär toll wenn mir jm. sagen könnte in welchen Zeilen welche änderungen rein müssen oder mir mal ein Beispiel geben könnte für das std::</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538219</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Sun, 29 Jun 2008 21:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 21:20:20 GMT]]></title><description><![CDATA[<p>Sorry, vorher hab ich dir etwas Falsches erzählt. Das kommt davon, wenn man kaum mit char-Arrays arbeitet ;). Man würde die Zuweisung zweier C-Strings mit <code>strcmp()</code> erledigen.</p>
<p>ChrisTucker schrieb:</p>
<blockquote>
<p>wär toll wenn mir jm. sagen könnte in welchen Zeilen welche änderungen rein müssen</p>
</blockquote>
<p>Abgesehen davon, dass wir hier nicht dein Programm neu schreiben wollen, würde dir das auch gar nichts bringen. Am besten suchst du dir dazu ein gutes Tutorial. In guten Büchern sollte <code>std::string</code> eigentlich auch angesprochen werden.</p>
<p>Trotzdem ein kleines Beispiel:</p>
<pre><code class="language-cpp">std::string Str1 = &quot;Hallo&quot;;
std::string Str2;
Str2 = Str1;       // Zuweisung geht :P
</code></pre>
<p>Ich weiss, ist nicht gerade das spektakulärste aller Beispiele, mehr Informationen gibts z.B. <a href="http://www.cplusplus.com/reference/string/string/" rel="nofollow">hier</a> (trotzdem wär ein Tutorial/Buch ratsam am Anfang).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538231</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Jun 2008 21:20:20 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 21:44:54 GMT]]></title><description><![CDATA[<p>Ich blicks gerade nicht. des strcmp funktioniert nur mit strings oder sollte ich meinen Fehler damit beheben können.</p>
<p>Also zeitlich bräucht ich jetzt ne schnelle Lösung.</p>
<p>Deswegen nochmal die frage läst sich das nur mit strings lösen? Weil da müsste ich mcih erst rein arbeiten.</p>
<p>Hab jetztmal strcmp verwendet kommt genau die gleiche Fehlermeldung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538241</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Sun, 29 Jun 2008 21:44:54 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 21:49:55 GMT]]></title><description><![CDATA[<p>ChrisTucker schrieb:</p>
<blockquote>
<p>...strcmp funktioniert nur mit strings oder sollte ich meinen Fehler damit beheben können...</p>
</blockquote>
<p>&quot;string&quot; != &quot;string&quot;<br />
Mal sind &quot;C-Strings&quot; (= char-Arrays mit 0-Terminierung) gemeint und manchmal die Klasse aus der Standardlib <a href="http://cppreference.com/cppstring/index.html" rel="nofollow">std::string</a>.</p>
<p>Du kannst zwar das Eine mit dem Anderen &quot;verknüpfen&quot;, aber sie sind nicht beliebig zu mischen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538245</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 29 Jun 2008 21:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 22:07:44 GMT]]></title><description><![CDATA[<p>ChrisTucker schrieb:</p>
<blockquote>
<p>Hab jetztmal strcmp verwendet kommt genau die gleiche Fehlermeldung!</p>
</blockquote>
<p>Dann hast du es falsch verwendet. Zeig mal wie du es eingesetzt hast.</p>
<p>Aber generell würde ich in C++ zu <code>std::string</code> raten, dann kannst du die char-Arrays quasi vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538251</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Jun 2008 22:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 23:33:08 GMT]]></title><description><![CDATA[<p>Zuerst so</p>
<pre><code>pTop-&gt;Ortskennung[i][e] = i;
</code></pre>
<p>und dann habe ich es darauf geändert</p>
<pre><code>strcmp(pTop-&gt;Ortskennung[i][e],i)
</code></pre>
<p>Aber vielleicht reden wir jetzt auch aneinander vorbei!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538279</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Sun, 29 Jun 2008 23:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Sun, 29 Jun 2008 23:37:44 GMT]]></title><description><![CDATA[<p>hat noch niemand gesagt, dass strcmp nicht zur &quot;zuweisung&quot; ist, sondern als abkürzung für str<sub>ing</sub>c<sub>o</sub>mp<sub>are</sub> steht?</p>
<p>zum &quot;zuweisen&quot; von C-strings (aka null-terminated-byte-strings, ntbs) verwendet man strcpy bzw. strncpy, wobei sichergestellt werden muss, dass man nicht mehr zeichen kopiert, als platz zur verfügung steht. und am ende muss man natürlich den angeforderten speicher wieder freigeben.</p>
<p>all das erspart man sich mit <code>std::string</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538280</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sun, 29 Jun 2008 23:37:44 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Mon, 30 Jun 2008 07:24:05 GMT]]></title><description><![CDATA[<p>ChrisTucker schrieb:</p>
<blockquote>
<p>Also zeitlich bräucht ich jetzt ne schnelle Lösung.</p>
</blockquote>
<p>Dennoch ist es nicht unsere Aufgabe dir deinen Code umzuschreiben, und es gibt nun wirklich genug Tutorials in denen man strings erklärt bekommt. Grundsätzlich musst du hier auch 2 unterschiedliche Programmierstile verstehen.</p>
<p>Unter C verwendet man char-Arrays und char-Pointer, sogenannte C-Strings. Diese können nur über separate Funktionen (#include &lt;cstring&gt;) sinnvoll manipuliert werden.</p>
<p>Unter C++ setzt man in der Regel auf die Klasse std::string (std:: weil die Klasse im Namensraum std liegt) die auch den Zuweisungsoperator etc. von haus aus mitbringt.</p>
<p>Die Themen Namensräume und std::string sollten in JEDEM guten C++ Buch mit als allererstes erklärt werden. Es ist aber auch nicht unsere Aufgabe dir alles bis ins letzte Detail zu erklären, es wurde schon auf Tutorials etc. verwiesen. Kostenlos sind auch die <a href="http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html" rel="nofollow">beiden englischen Bücher von Bruce Eckel</a> erhältlich.</p>
<p>So, dennoch eine wirklich kurze Erklärung:</p>
<p><strong>Namensräume</strong><br />
Namensräume dienen dazu Namenskonflikte zu vermeiden. Die C++ Standardbibliothek ist im Namensraum std.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

int main()
{
  std::string text = &quot;Hallo&quot;;
  text += &quot; Welt&quot;; // Addition ist möglich
  std::cout &lt;&lt; text &lt;&lt; std::endl; // Auch cout, endl liegt im Namensraum std;
}
</code></pre>
<p>Dies kann man auch wie folgt schreiben. Dabei ist aber zu beachten das man using namespace NIE im Header verwenden sollte.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

using namespace std; // Holt den Namensraum std in den globalen Namensraum

int main()
{
  string text = &quot;Hallo&quot;;
  text += &quot; Welt&quot;; // Addition ist möglich
  cout &lt;&lt; text &lt;&lt; endl; // Auch cout, endl liegt im Namensraum std;
}
</code></pre>
<p>Wozu braucht man nun Namensräume? Nehmen wir mal folgendes typedef für ein char[20] hinein, wie es erst vor kurzen hier aufgetaucht ist:</p>
<pre><code class="language-cpp">#include &lt;string&gt;

typedef char string[20];

// using namespace std; &lt;-- Nicht möglich Namenskonflikt!

int main()
{
  string a;      // Eigentlich char a[20];
  std::string b; // std::string aus &lt;string&gt;
}
</code></pre>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538322</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 30 Jun 2008 07:24:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei char Felder on Mon, 30 Jun 2008 11:25:42 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>hat noch niemand gesagt, dass strcmp nicht zur &quot;zuweisung&quot; ist, sondern als abkürzung für str<sub>ing</sub>c<sub>o</sub>mp<sub>are</sub> steht?</p>
</blockquote>
<p>Genau solche Verwechslungen passieren eben, wenn man schon ewig keine char-Arrays mehr benutzt hat <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="😃"
    /><br />
Tut mir leid wegen der daraus entstandenen Unklarheiten. Hier noch einmal einige wichtige Funktionen der beiden Datentypen im Vergleich ( <code>std::string</code> bietet meistens mehrere Lösungsmöglichkeiten an):</p>
<p><strong>char-Arrays (nullterminierte C-Strings) (C)</strong></p>
<pre><code class="language-cpp">char Text[30];

// Zuweisung
strcpy(Text, &quot;Hallo&quot;);

// Anhängung
strcat(Text, &quot; wie geht es?&quot;);			

// Vergleich	
if (!strcmp(Text, &quot;Hallo wie geht es?&quot;))
	/* ... */;
</code></pre>
<p><strong>std::string-Klasse (C++)</strong></p>
<pre><code class="language-cpp">std::string String;

// Zuweisung
String = &quot;Hallo&quot;;
String.assign(&quot;Hallo&quot;);

// Anhängung
String += &quot; wie geht es?&quot;;
String = String + &quot; wie geht es?&quot;;
String.append(&quot; wie geht es?&quot;);

// Vergleich
String = &quot;Hallo wie geht es?&quot;;
if (!String.compare(&quot;Hallo wie geht es?&quot;))
	/* ... */;
if (String == &quot;Hallo wie geht es?&quot;)
	/* ... */;
</code></pre>
<p>Neben der vereinfachten Handhabung durch Memberfunktionen und Operatoren kann <code>std::string</code> im Gegensatz zu den statischen Arrays dynamisch vergrössert werden. Man muss sich auch nicht um die Speicherverwaltung kümmern, Pufferangaben kann man sich sparen. Ausserdem hat man die benötigten Funktionen gerade als Member der Klasse und nicht irgendwo global.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1538467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1538467</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 30 Jun 2008 11:25:42 GMT</pubDate></item></channel></rss>