<?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[Frage zu tolower aus ctype]]></title><description><![CDATA[<p>Hallo,</p>
<p>In diesem Thread<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-139836.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-139836.html</a> ist unter anderem eine Umwandlung Gross/Kleinbuchstaben mittels tolower und transform erläutert. Mal abgesehen von der signed/unsigned-Problematik funktionierte das bei mir auch nicht, weil tolower nicht eindeutig war. Ich habe jetzt hier folgendes gefunden (angepasst).</p>
<pre><code class="language-cpp">locale loc;
string tempobject;
// tempobject wird gefüllt
// und jetzt transformiert
use_facet&lt;ctype&lt;string::value_type&gt; &gt;(loc).tolower(tempobject.begin(), tempobject.end());
</code></pre>
<p>Existiert hier die signed/unsigned-Problematik noch?<br />
Bei den bisherigen Tests hat es funktioniert. Ich habe allerdings auch noch nicht alle möglichen chars getestet.</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144700/frage-zu-tolower-aus-ctype</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 17:58:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144700.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Apr 2006 17:37:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu tolower aus ctype on Thu, 20 Apr 2006 17:38:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>In diesem Thread<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-139836.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-139836.html</a> ist unter anderem eine Umwandlung Gross/Kleinbuchstaben mittels tolower und transform erläutert. Mal abgesehen von der signed/unsigned-Problematik funktionierte das bei mir auch nicht, weil tolower nicht eindeutig war. Ich habe jetzt hier folgendes gefunden (angepasst).</p>
<pre><code class="language-cpp">locale loc;
string tempobject;
// tempobject wird gefüllt
// und jetzt transformiert
use_facet&lt;ctype&lt;string::value_type&gt; &gt;(loc).tolower(tempobject.begin(), tempobject.end());
</code></pre>
<p>Existiert hier die signed/unsigned-Problematik noch?<br />
Bei den bisherigen Tests hat es funktioniert. Ich habe allerdings auch noch nicht alle möglichen chars getestet.</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041476</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 20 Apr 2006 17:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu tolower aus ctype on Fri, 21 Apr 2006 06:21:57 GMT]]></title><description><![CDATA[<p>Was meinst du mit &quot;nicht eindeutig&quot;?</p>
<p>Wie dein Code mit dem signed/unsigned-Problem umgehen kann, hängt afaik stark von der Implementierung ab. Ich würde mich nicht darauf verlassen. (wenn du es testen willst - verwende Zeichen jenseits von '\x8F', darunter ist es sowieso nicht relevant)</p>
<p>Aber die Locale-Version hat auf jeden Fall einen Vorteil gegenüber der C-Funktionen: Du kannst dort auch andere Locales verwenden (soweit vorhanden, z.B. Deutsch - wandelt auch Umlaute um).</p>
<p>(PS: Übrigens gibt es von tolower() auch eine Zwei-Parameter-Version, die zu deinem Code äquivalent ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041651</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Apr 2006 06:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu tolower aus ctype on Fri, 21 Apr 2006 07:44:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Mit nicht eindeutig, meine ich folgendes</p>
<pre><code class="language-cpp">transform (tempobject.begin(),tempobject.end(), tempobject.begin(), static_cast&lt;int (*)(int)&gt;(tolower));
</code></pre>
<p>Wenn ich das so versuche anzuwenden, kommt folgende Fehlermeldung.<br />
&quot;Überladene Funktion 'tolower' ist in diesem Kontext mehrdeutig&quot;</p>
<p>Die obige Variante hat das Problem nicht. Wenn ich eine der anderen tolower in einer Schleife verwende geht es auch.<br />
Diese tolower</p>
<pre><code class="language-cpp">template &lt;class charT&gt; 
charT tolower (charT c, const locale&amp; loc) const;
</code></pre>
<p>ist auch nicht völlig äquivalent zur der aus meinem Code. Zumindest kann ich da auf das transform verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041693</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 21 Apr 2006 07:44:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu tolower aus ctype on Fri, 21 Apr 2006 07:59:06 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Mit nicht eindeutig, meine ich folgendes</p>
<pre><code class="language-cpp">transform (tempobject.begin(),tempobject.end(), tempobject.begin(), static_cast&lt;int (*)(int)&gt;(tolower));
</code></pre>
<p>Wenn ich das so versuche anzuwenden, kommt folgende Fehlermeldung.<br />
&quot;Überladene Funktion 'tolower' ist in diesem Kontext mehrdeutig&quot;</p>
</blockquote>
<p>Das ist das Problem mit überladenen Funktionen und Funktionszeigern. Eventuell könnten die Funktor-Wrapper der STL (ptr_fun) da weiterhelfen.<br />
(ohne Garantie)</p>
<blockquote>
<pre><code class="language-cpp">template &lt;class charT&gt; 
charT tolower (charT c, const locale&amp; loc) const;
</code></pre>
<p>ist auch nicht völlig äquivalent zur der aus meinem Code. Zumindest kann ich da auf das transform verzichten.</p>
</blockquote>
<p>Ups, da dürftest du recht haben (hab' wohl nicht aufmerksam genug gelesen.</p>
<p>PS: Eine andere Lösung wäre es, eine eindeutige Hilfsfunktion um tolower herumzuschreiben - damit kannst du auch das Vorzeichen-Problem umgehen:</p>
<pre><code class="language-cpp">inline unsigned char my_tolower(unsigned char v)
{ return tolower(v); }

...
transform(s.begin(),s.end(),s.begin(),my_tolower);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1041709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041709</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Apr 2006 07:59:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu tolower aus ctype on Fri, 21 Apr 2006 08:04:28 GMT]]></title><description><![CDATA[<p>Danke erstmal,</p>
<p>Das mit ptr_fun schau ich mir mal an. Ich hab damit zwar noch nie gearbeitet, aber man lernt ja immer was dazu. <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 />
Auf eine Hilfsfunktion wollte ich eigentlich verzichten. Wenn alle Stricke reißen werde ich aber wohl trotzdem darauf zurückkommen.</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1041714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1041714</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 21 Apr 2006 08:04:28 GMT</pubDate></item></channel></rss>