<?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::toupper erzeugt warnung]]></title><description><![CDATA[<pre><code class="language-cpp">std::string up(&quot;blubb&quot;);
std::transform(up.begin(), up.end(), up.begin(), std::toupper);
</code></pre>
<p>codewarrior meckert:</p>
<pre><code>Warning: implicit arithmethic conversion from 'int' to 'char'
</code></pre>
<p>mache ich was falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226833/std-toupper-erzeugt-warnung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 12:27:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226833.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Nov 2008 14:03:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 14:03:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::string up(&quot;blubb&quot;);
std::transform(up.begin(), up.end(), up.begin(), std::toupper);
</code></pre>
<p>codewarrior meckert:</p>
<pre><code>Warning: implicit arithmethic conversion from 'int' to 'char'
</code></pre>
<p>mache ich was falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611266</guid><dc:creator><![CDATA[gewarnter]]></dc:creator><pubDate>Thu, 06 Nov 2008 14:03:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 14:14:17 GMT]]></title><description><![CDATA[<p>Naja, std::toupper erwartet einen int.<br />
Ein kleiner Wrapper hilft:</p>
<pre><code class="language-cpp">char my_toupper(char c)
{
    return static_cast&lt;char&gt;(std::toupper(static_cast&lt;int&gt;(c)));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1611278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611278</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 06 Nov 2008 14:14:17 GMT</pubDate></item><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 14:50:20 GMT]]></title><description><![CDATA[<p>das ist doch krank, zwei standard-funktionalitäten die füreinander gemacht sind, aber nicht ohne warnung zusammen funktionieren.<br />
der verdammte codewarrior nervt sowieso mit seinen pingeligen warnungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611314</guid><dc:creator><![CDATA[gewarnter]]></dc:creator><pubDate>Thu, 06 Nov 2008 14:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 14:51:27 GMT]]></title><description><![CDATA[<p>gewarnter schrieb:</p>
<blockquote>
<p>das ist doch krank, zwei standard-funktionalitäten die füreinander gemacht sind, aber nicht ohne warnung zusammen funktionieren.<br />
der verdammte codewarrior nervt sowieso mit seinen pingeligen warnungen.</p>
</blockquote>
<p>Ne, er hat recht. Das Problem ist eher, dass die C-Funktion int erwartet.<br />
Das kannst Du codewarrior nicht anlasten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611318</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 06 Nov 2008 14:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 14:51:44 GMT]]></title><description><![CDATA[<p>Ich möchte zudem darauf hinweisen, dass du hier womöglich einen unerwarteten Fehler erhalten könntest. Du verwendest hier nämlich C-Funktionen und somit das C-Locale statt des C++-Locales. &quot;Richtig&quot; wäre hier sowas:</p>
<pre><code class="language-cpp">#include &lt;locale&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;

template&lt;typename CharT&gt;
class ToUpper
{
	// Attributes //
private:
	std::locale m_locale;

	// Constructors &amp; Destructor //
public:
	ToUpper(std::locale const&amp; local = std::locale())
		: m_locale(local)
	{ }

	~ToUpper() { };

	// Operators //
public:
	CharT operator ()(CharT const&amp; c)
	{ return std::toupper(c, m_locale); }
};

int main()
{
	std::string myString = &quot;Hello&quot;;

	std::transform(myString.begin(), myString.end(), myString.begin(), ToUpper&lt;char&gt;());

	std::cout &lt;&lt; myString &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>Das ist übrigens wahrscheinlich auch der Grund wieso es Warnungen gibt. Die Funktionen sind nicht füreinander gedacht <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611319</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 06 Nov 2008 14:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 15:02:33 GMT]]></title><description><![CDATA[<p>ok, danke. werde ich dann so machen. schade, dass man das selber machen muss. ist ja nicht wirklich dermaßen exotisch.</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Das kannst Du codewarrior nicht anlasten.</p>
</blockquote>
<p>stimmt schon, nerven tuts trotzdem, auch wenn man selber schuld ist.<br />
vc++ oder gcc bringen selbst in der pedantischsten einstellung bei so manchem konstrukt keine warnungen (habs in diesem fall nicht extra ausprobiert). wenn man sich so über jahre bestimmte konstruktionen angeeignet hat, und kriegt dann vom codewarrior an allen ecken auf die fresse, dann frustriert das schon ein bisschen <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/1611339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611339</guid><dc:creator><![CDATA[gewarnter]]></dc:creator><pubDate>Thu, 06 Nov 2008 15:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 15:23:54 GMT]]></title><description><![CDATA[<p>Ja, es ist etwas blöd, dass man sich solche Dinge immer selber zusammenbauen muss. Man hat allerdings schnell mal eine paar Standardheader für sich gebaut und kann dann diese immer wieder verwenden <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 />
Mit Boost, kann man sich hier zudem auch noch das Leben etwas vereinfachen:</p>
<pre><code class="language-cpp">#include &lt;boost/bind.hpp&gt;

#include &lt;locale&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;algorithm&gt;

int main()
{
	std::string myString = &quot;Hello&quot;;

	std::transform(myString.begin(),
				   myString.end(),
				   myString.begin(),
				   boost::bind(&amp;std::toupper&lt;char&gt;,
							   _1,
							   std::locale()));

	std::cout &lt;&lt; myString &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>Der VC++ und G++ meckern überigens bei sowas auch rum, was absolut korrekt ist. Dort kann man zwar die Warnstufe runterschrauben (was nicht empfehlenswert ist), aber das wird beim CodeWarrior wohl auch gehen.<br />
Vielleicht hat es früher bei dir keine Warnungen gegeben, als die Compiler VC++ und G++ noch nicht ganz Standardkonform waren.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611353</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 06 Nov 2008 15:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to std::toupper erzeugt warnung on Thu, 06 Nov 2008 17:10:10 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Der VC++ und G++ meckern überigens bei sowas auch rum, was absolut korrekt ist.</p>
</blockquote>
<p>vc++ 2008 in warnstufe 4 meckert bei dem code nicht. comeau online auch nicht. generell macht vc++ viele implizite konvertierungen ohne zu warnen. codewarrior sieht das nicht so locker.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1611420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1611420</guid><dc:creator><![CDATA[gewarnter]]></dc:creator><pubDate>Thu, 06 Nov 2008 17:10:10 GMT</pubDate></item></channel></rss>