<?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[Verständnis Frage]]></title><description><![CDATA[<p>Wenn ich folgenden Code das erstemal starte wird das erste Zeichen verschluckt<br />
woran liegt das?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

void zaehlziffern(string s){
	cout &lt;&lt;&quot;Der String hat &quot;&lt;&lt;s.size()&lt;&lt;&quot; Zeichen&quot;;
};

void toupperstring(string s){
	cout &lt;&lt;s&lt;&lt;endl;
	for(unsigned int i=0;i&lt;s.size();++i){
		s[i]=toupper(s[i]);
	cout &lt;&lt;s[i];
    }
};

int main()
{ 
	char frage='w';
	string s=&quot;&quot;;

	do{		
	cout &lt;&lt;&quot;Bitte Text eingeben: &quot;;
	cin.ignore();
	getline(cin,s);
	zaehlziffern(s);
	cout &lt;&lt;endl;
	toupperstring(s);
	cout &lt;&lt;endl;
	cout &lt;&lt;&quot;e=ende, w=weiter &quot;;
	cin &gt;&gt;frage;
	}while(frage !='e');

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/188799/verständnis-frage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 05:21:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188799.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Aug 2007 09:00:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnis Frage on Sat, 04 Aug 2007 09:00:40 GMT]]></title><description><![CDATA[<p>Wenn ich folgenden Code das erstemal starte wird das erste Zeichen verschluckt<br />
woran liegt das?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

void zaehlziffern(string s){
	cout &lt;&lt;&quot;Der String hat &quot;&lt;&lt;s.size()&lt;&lt;&quot; Zeichen&quot;;
};

void toupperstring(string s){
	cout &lt;&lt;s&lt;&lt;endl;
	for(unsigned int i=0;i&lt;s.size();++i){
		s[i]=toupper(s[i]);
	cout &lt;&lt;s[i];
    }
};

int main()
{ 
	char frage='w';
	string s=&quot;&quot;;

	do{		
	cout &lt;&lt;&quot;Bitte Text eingeben: &quot;;
	cin.ignore();
	getline(cin,s);
	zaehlziffern(s);
	cout &lt;&lt;endl;
	toupperstring(s);
	cout &lt;&lt;endl;
	cout &lt;&lt;&quot;e=ende, w=weiter &quot;;
	cin &gt;&gt;frage;
	}while(frage !='e');

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1338536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338536</guid><dc:creator><![CDATA[rest]]></dc:creator><pubDate>Sat, 04 Aug 2007 09:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis Frage on Sat, 04 Aug 2007 09:10:08 GMT]]></title><description><![CDATA[<p>Das liegt an dem ignore()-Aufruf, den du an den Anfang der Schleife gesetzt hast. (ignore() greift sich ein Zeichen aus dem Eingabepuffer und entsorgt es - das brauchst du nur, wenn du vor einem getline()-Aufruf vermutest, daß noch Reste früherer Eingaben im Tastaturpuffer zurückgeblieben sind)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1338540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338540</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 04 Aug 2007 09:10:08 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis Frage on Tue, 07 Aug 2007 09:10:15 GMT]]></title><description><![CDATA[<p>Bie folgenden Code das selbe Problem aber ohne ignore()</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

void verdreher(string s)
{
	unsigned int x = s.size();
	for(x;x&gt;0;--x)
	{
		cout &lt;&lt;s[x];
	}
}

int main()
{
	string s;
	char a;
	cout &lt;&lt;&quot;Bitte ein String eingeben: &quot;;
	getline(cin,s);
	verdreher(s);
	cin &gt;&gt;a;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1339963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339963</guid><dc:creator><![CDATA[rest]]></dc:creator><pubDate>Tue, 07 Aug 2007 09:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis Frage on Tue, 07 Aug 2007 09:25:25 GMT]]></title><description><![CDATA[<p>Das letzte Element in Deinem String ist an der Position size()-1, weil das erste Element bei 0 anfängt. D.h. x muss mit size()-1 initialisiert werden.</p>
<p>Dann ist Deine Abbruch-Bedingung in der For-Schleife nicht ganz richtig.<br />
Wenn x = 0 ist, dann muss die Schleife auch noch ausgeführt werden.<br />
Wenn Du aber als Bedingung x &gt;= 0 machst, bekommst Du ne endlosschleife, weil x unsigned ist.</p>
<p>einfacher könnte es so gehen:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt; // für std::reverse
...
void verdreher(string s) 
{
	std::reverse(s.begin(), s.end()); // dreht den inhalt des strings um
	cout &lt;&lt; s;
} 
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1339970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339970</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Tue, 07 Aug 2007 09:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis Frage on Tue, 07 Aug 2007 09:57:11 GMT]]></title><description><![CDATA[<p>vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339999</guid><dc:creator><![CDATA[rest]]></dc:creator><pubDate>Tue, 07 Aug 2007 09:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis Frage on Tue, 07 Aug 2007 14:03:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

void reverse_show(const std::string&amp; string, std::ostream&amp; stream)
{
	for (std::size_t pos = string.length(); pos &gt; 0; --pos)
		stream &lt;&lt; string.at(pos - 1);
}

int main()
{
	std::cout &lt;&lt; &quot;String: &quot; &lt;&lt; std::flush;
	std::string string;
	std::getline(std::cin, string);
	reverse_show(string, std::cout);
	std::cin.get();
}
</code></pre>
<p>... um bei deinem Code zu bleiben ...</p>
<pre><code class="language-cpp">getline(cin,s);
    zaehlziffern(s);
    cout &lt;&lt;endl;
    toupperstring(s);
    cout &lt;&lt;endl;
    cout &lt;&lt;&quot;e=ende, w=weiter &quot;;
</code></pre>
<p>... geht besser wenn du ne std. Funktion nimmst!</p>
<pre><code class="language-cpp">std::cout &lt;&lt; &quot;Text: &quot; &lt;&lt; std::flush;
		std::string text;
		std::getline(std::cin, text);
		length_show(text, std::cout);
		std::transform(text.begin(), text.end(), text.begin(), std::toupper);
		std::cout &lt;&lt; &quot;\n&quot; &lt;&lt; text &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;(E)nde - (W)eiter&quot; &lt;&lt; std::endl;
</code></pre>
<p>... viel Ordentlicher <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="😉"
    /><br />
Aja die nötigen Header:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;cctype&gt;
</code></pre>
<p>... und um beim Muster zu bleiben:</p>
<pre><code class="language-cpp">void length_show(const std::string&amp; string, std::ostream&amp; stream)
{
	stream &lt;&lt; &quot;Der String hat &quot; &lt;&lt; string.length() &lt;&lt; &quot; Zeichen!&quot;;
}
</code></pre>
<p>...</p>
<p>so das mal als Verbesserungsvorschlag <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/1340220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340220</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 07 Aug 2007 14:03:35 GMT</pubDate></item></channel></rss>