<?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[std::string liefert falschen const char*?]]></title><description><![CDATA[<p>Hallo liebe Community,<br />
ich wollte mich eben dran machen und ein Vokabel-Lern-Programm programmieren und möchte so viel wie möglich mit Klassen arbeiten. Ich habe bisher lediglich eine Klasse namens* <code>Vokabel</code> *implementiert, die folgendermaßen aussieht:</p>
<pre><code>#pragma once
class Vokabel
{
public:
	Vokabel(const char* n, const char* u);
	bool check(const char* eingabe);
	const char* getName();
private:
	const char* name;
	const char* uebersetzung;
};
</code></pre>
<pre><code>#include &quot;Vokabel.h&quot;

Vokabel::Vokabel(const char* n, const char* u) : name(n), uebersetzung(u)
{
}

bool Vokabel::check(const char* eingabe)
{
	return (eingabe == uebersetzung);
}

const char* Vokabel::getName()
{
	return name;
}
</code></pre>
<p>In meiner Main-Funktion wird eine Vokabel abgefragt und geprüft, ob die Übersetzung korrekt ist. Jedoch wird dort die Eingabe falsch ausgewertet und immer mit &quot;Falsche Antwort&quot; beendet.</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;Vokabel.h&quot;
#include &lt;string&gt;
#include &lt;conio.h&gt;

int main()
{
	std::string eingabe;
	Vokabel vok1(&quot;Auto&quot;, &quot;Car&quot;);
	std::cout &lt;&lt; vok1.getName() &lt;&lt; &quot;: &quot;;
	std::cin  &gt;&gt; eingabe;
	if(vok1.check(eingabe.c_str()))
		std::cout &lt;&lt; &quot;Richtige Antwort!&quot;;
	else
		std::cout &lt;&lt; &quot;Falsche Antwort!&quot;;
	_getch();
}
</code></pre>
<p>Ich glaube es hat etwas mit der Memberfunktion* <code>c_str()</code> *aus der String-Klasse zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321942/std-string-liefert-falschen-const-char</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 18:03:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321942.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Nov 2013 15:51:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 15:51:44 GMT]]></title><description><![CDATA[<p>Hallo liebe Community,<br />
ich wollte mich eben dran machen und ein Vokabel-Lern-Programm programmieren und möchte so viel wie möglich mit Klassen arbeiten. Ich habe bisher lediglich eine Klasse namens* <code>Vokabel</code> *implementiert, die folgendermaßen aussieht:</p>
<pre><code>#pragma once
class Vokabel
{
public:
	Vokabel(const char* n, const char* u);
	bool check(const char* eingabe);
	const char* getName();
private:
	const char* name;
	const char* uebersetzung;
};
</code></pre>
<pre><code>#include &quot;Vokabel.h&quot;

Vokabel::Vokabel(const char* n, const char* u) : name(n), uebersetzung(u)
{
}

bool Vokabel::check(const char* eingabe)
{
	return (eingabe == uebersetzung);
}

const char* Vokabel::getName()
{
	return name;
}
</code></pre>
<p>In meiner Main-Funktion wird eine Vokabel abgefragt und geprüft, ob die Übersetzung korrekt ist. Jedoch wird dort die Eingabe falsch ausgewertet und immer mit &quot;Falsche Antwort&quot; beendet.</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;Vokabel.h&quot;
#include &lt;string&gt;
#include &lt;conio.h&gt;

int main()
{
	std::string eingabe;
	Vokabel vok1(&quot;Auto&quot;, &quot;Car&quot;);
	std::cout &lt;&lt; vok1.getName() &lt;&lt; &quot;: &quot;;
	std::cin  &gt;&gt; eingabe;
	if(vok1.check(eingabe.c_str()))
		std::cout &lt;&lt; &quot;Richtige Antwort!&quot;;
	else
		std::cout &lt;&lt; &quot;Falsche Antwort!&quot;;
	_getch();
}
</code></pre>
<p>Ich glaube es hat etwas mit der Memberfunktion* <code>c_str()</code> *aus der String-Klasse zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368943</guid><dc:creator><![CDATA[Klapperstorch]]></dc:creator><pubDate>Fri, 29 Nov 2013 15:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 15:55:41 GMT]]></title><description><![CDATA[<p>Du kannst Pointer nicht mit == vergleichen. Zumindest macht der Vergleich nicht das, was du vielleicht denkst.</p>
<p>Nimm std::string statt char*, und alles wird gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368944</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 29 Nov 2013 15:55:41 GMT</pubDate></item><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 15:58:51 GMT]]></title><description><![CDATA[<p>Was vergleicht es denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368946</guid><dc:creator><![CDATA[Klapperstorch]]></dc:creator><pubDate>Fri, 29 Nov 2013 15:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 16:01:53 GMT]]></title><description><![CDATA[<p>Klapperstorch schrieb:</p>
<blockquote>
<p>Was vergleicht es denn?</p>
</blockquote>
<p>Die Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368947</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Fri, 29 Nov 2013 16:01:53 GMT</pubDate></item><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 16:03:47 GMT]]></title><description><![CDATA[<p>Und wieso werden dann keine Adressen ausgegeben, wenn ich schreibe:</p>
<pre><code>const char* ptr = &quot;Hallo&quot;;
std::cout &lt;&lt; ptr;
</code></pre>
<p>sondern der Inhalt des Zeigers?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368948</guid><dc:creator><![CDATA[Klapperstorch]]></dc:creator><pubDate>Fri, 29 Nov 2013 16:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 16:14:46 GMT]]></title><description><![CDATA[<p>Weil <em>operator&lt;&lt;</em> für <em>char</em>* und <em>const char</em>* überladen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368951</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 29 Nov 2013 16:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 16:21:01 GMT]]></title><description><![CDATA[<p>Achso, okay danke Euch <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 />
Leider bin ich bisher noch nicht an dem Kapitel angelangt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368953</guid><dc:creator><![CDATA[Klapperstorch]]></dc:creator><pubDate>Fri, 29 Nov 2013 16:21:01 GMT</pubDate></item><item><title><![CDATA[Reply to std::string liefert falschen const char*? on Fri, 29 Nov 2013 16:22:05 GMT]]></title><description><![CDATA[<p>Klapperstorch schrieb:</p>
<blockquote>
<p>Und wieso werden dann keine Adressen ausgegeben, wenn ich schreibe:</p>
<pre><code>const char* ptr = &quot;Hallo&quot;;
std::cout &lt;&lt; ptr;
</code></pre>
<p>sondern der Inhalt des Zeigers?</p>
</blockquote>
<p>Wie DocShoe schon sagte, sind die operator&lt;&lt; für diverse Standardtypen überladen.<br />
Für Pointer auf built-ins wird dabei die Adresse ausgegeben, außer bei Pointern auf char*, da wird die Zeichenkette selber ausgegeben.<br />
Diese Ausnahme wurde eingefügt, um Literal-Zeichenketten einfacher auszugeben.<br />
operator== ist jedoch nicht von den Machern der Standardbibliothek überladen und macht deshalb das, was es bei Pointern immer macht: die Adressen vergleichen.<br />
Die (beste) Lösung wurde ebenfalls schon genannt:<br />
Nutze std::string. Der operator== von std::string vergleicht die Werte der Zeichenketten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368954</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 29 Nov 2013 16:22:05 GMT</pubDate></item></channel></rss>