<?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[Multichars (z.B. Umlaute) handlen]]></title><description><![CDATA[<p>Morgen,</p>
<p>ich habe ein Problem mit Multichars, von dem ich eigentlich gedacht hätte, es gäbe bereits Threads dazu, jedoch finde ich keine, entschuldigt bitte.</p>
<p>Ich würde gern mit Sonderzeichen arbeiten und chars iterieren und einzeln bearbeiten bzw. die Länge eines Strings ermitteln.<br />
Das Problem, das sich hierbei ergibt ist das, dass Umlaute durch eine Kombination mehrerer Zeichen dargestellt werden und dadurch nicht auf die übliche Weise bearbeiten lassen.</p>
<p>Dieser Code</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

int main()
{
    std::string test = &quot;ä&quot;;
    std::cout &lt;&lt; test.size() &lt;&lt; std::endl &lt;&lt; std::endl;
    for (auto i:test)
        std::cout &lt;&lt; i &lt;&lt; std::endl;
    std::cout &lt;&lt; 'ä' &lt;&lt; std::endl;

    return 0;
}
</code></pre>
<p>erzeugt folgende Ausgabe:</p>
<blockquote>
<p>2</p>
<p>�<br />
50084</p>
</blockquote>
<p>Und logischerweise beim Kompilieren (mit G++) folgende Warnung:</p>
<blockquote>
<p>test.cpp:10:18: Warnung: Zeichenkonstante mit mehreren Zeichen [-Wmultichar]</p>
</blockquote>
<p>Nun ist meine Frage:<br />
Wie geht man üblicherweise mit diesem Problem um?</p>
<p>mit freundlichen Grüßen,<br />
Mr. Multichar</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307971/multichars-z-b-umlaute-handlen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 05:19:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307971.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Sep 2012 00:10:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 00:10:38 GMT]]></title><description><![CDATA[<p>Morgen,</p>
<p>ich habe ein Problem mit Multichars, von dem ich eigentlich gedacht hätte, es gäbe bereits Threads dazu, jedoch finde ich keine, entschuldigt bitte.</p>
<p>Ich würde gern mit Sonderzeichen arbeiten und chars iterieren und einzeln bearbeiten bzw. die Länge eines Strings ermitteln.<br />
Das Problem, das sich hierbei ergibt ist das, dass Umlaute durch eine Kombination mehrerer Zeichen dargestellt werden und dadurch nicht auf die übliche Weise bearbeiten lassen.</p>
<p>Dieser Code</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

int main()
{
    std::string test = &quot;ä&quot;;
    std::cout &lt;&lt; test.size() &lt;&lt; std::endl &lt;&lt; std::endl;
    for (auto i:test)
        std::cout &lt;&lt; i &lt;&lt; std::endl;
    std::cout &lt;&lt; 'ä' &lt;&lt; std::endl;

    return 0;
}
</code></pre>
<p>erzeugt folgende Ausgabe:</p>
<blockquote>
<p>2</p>
<p>�<br />
50084</p>
</blockquote>
<p>Und logischerweise beim Kompilieren (mit G++) folgende Warnung:</p>
<blockquote>
<p>test.cpp:10:18: Warnung: Zeichenkonstante mit mehreren Zeichen [-Wmultichar]</p>
</blockquote>
<p>Nun ist meine Frage:<br />
Wie geht man üblicherweise mit diesem Problem um?</p>
<p>mit freundlichen Grüßen,<br />
Mr. Multichar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250134</guid><dc:creator><![CDATA[Mr. Multichar]]></dc:creator><pubDate>Tue, 11 Sep 2012 00:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 00:12:04 GMT]]></title><description><![CDATA[<p>Ich vergaß zu erwähnen, dass std::wstring nicht infrage kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250135</guid><dc:creator><![CDATA[Mr. Multichar]]></dc:creator><pubDate>Tue, 11 Sep 2012 00:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 06:36:06 GMT]]></title><description><![CDATA[<p>Bitte hier schauen: <a href="http://www.c-plusplus.net/forum/39326-full" rel="nofollow">http://www.c-plusplus.net/forum/39326-full</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250146</guid><dc:creator><![CDATA[[Rew.]]]></dc:creator><pubDate>Tue, 11 Sep 2012 06:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 13:48:06 GMT]]></title><description><![CDATA[<p>[Rew.] schrieb:</p>
<blockquote>
<p>Bitte hier schauen: <a href="http://www.c-plusplus.net/forum/39326-full" rel="nofollow">http://www.c-plusplus.net/forum/39326-full</a></p>
</blockquote>
<p>Funktioniert bei mir nicht, so werden Nichtdefinierte Zeichen ausgegeben.</p>
<p>Das einzige, das ich noch gefunden habe, ist der Typ std::wstring_convert, der mit C++11 hätte hinzukommen sollen, jedoch wurde er bis jetzt nicht in GCC implementiert.</p>
<p>Weiß zufällig jemand, wann der Typ voraussichtlich seinen Weg zu GCC findet und ob es vielleicht noch andere Möglichkeiten gibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250283</guid><dc:creator><![CDATA[Mr. Multichar]]></dc:creator><pubDate>Tue, 11 Sep 2012 13:48:06 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 13:50:53 GMT]]></title><description><![CDATA[<p>Welche von den zwei Methoden funktioniert nicht? Beide??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250284</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 11 Sep 2012 13:50:53 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 14:02:31 GMT]]></title><description><![CDATA[<p>[Rewind] schrieb:</p>
<blockquote>
<p>Welche von den zwei Methoden funktioniert nicht? Beide??</p>
</blockquote>
<p>Beide funktionieren nicht. Was damit zu tun haben könnte, dass ich mit Win32 nichts zu tun habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250295</guid><dc:creator><![CDATA[Mr. Multichar]]></dc:creator><pubDate>Tue, 11 Sep 2012 14:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 14:11:47 GMT]]></title><description><![CDATA[<p>mbstowcs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250305</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 11 Sep 2012 14:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 14:45:55 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>mbstowcs</p>
</blockquote>
<p>Danke, auf die Idee, in der C-Lib nachzusehen, wäre ich gar nicht gekommen.</p>
<p>Nun werfen die Befehle <code>std::mbstowcs</code> und <code>std::wcstombs</code> für mich die Frage auf: Woher kenne ich die Länge des resultierenden Strings?</p>
<p><a href="http://en.cppreference.com" rel="nofollow">http://en.cppreference.com</a> führt Folgendes Beispiel an:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;clocale&gt;
#include &lt;cstdlib&gt;

int main()
{
    std::setlocale(LC_ALL, &quot;en_US.utf8&quot;);
    // UTF-8 narrow multibyte encoding
    const wchar_t* wstr = L&quot;z\u00df\u6c34\U0001d10b&quot;; // or L&quot;zß水𝄋&quot;
    char mbstr[11];
    std::wcstombs(mbstr, wstr, 11);
    std::cout &lt;&lt; &quot;multibyte string: &quot; &lt;&lt; mbstr &lt;&lt; '\n';
}
</code></pre>
<p><a href="http://en.cppreference.com/w/cpp/string/multibyte/wcstombs" rel="nofollow">http://en.cppreference.com/w/cpp/string/multibyte/wcstombs</a></p>
<p>Weshalb die 11? Lässt sich die Länge irgendwie dynamisch bestimmen? <code>std::basic_string::size()</code> hilft mir hier scheinbar nicht weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250329</guid><dc:creator><![CDATA[Mr. Multichar]]></dc:creator><pubDate>Tue, 11 Sep 2012 14:45:55 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 14:53:05 GMT]]></title><description><![CDATA[<p>Mr. Multichar schrieb:</p>
<blockquote>
<p>Weshalb die 11? Lässt sich die Länge irgendwie dynamisch bestimmen?</p>
</blockquote>
<p>Auf der von dir verlinkten Seite steht:</p>
<blockquote>
<p>POSIX specifies a common extension: if dst is a null pointer, this function returns the number of bytes that would be written to dst, if converted. Similar behavior is standard for std::wcsrtombs.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2250334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250334</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 11 Sep 2012 14:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Tue, 11 Sep 2012 15:01:53 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Mr. Multichar schrieb:</p>
<blockquote>
<p>Weshalb die 11? Lässt sich die Länge irgendwie dynamisch bestimmen?</p>
</blockquote>
<p>Auf der von dir verlinkten Seite steht:</p>
<blockquote>
<p>POSIX specifies a common extension: if dst is a null pointer, this function returns the number of bytes that would be written to dst, if converted. Similar behavior is standard for std::wcsrtombs.</p>
</blockquote>
</blockquote>
<p>Peinlich <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="😃"
    /> Danke, damit ist mein Problem wohl gelöst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250338</guid><dc:creator><![CDATA[Mr. Multichar]]></dc:creator><pubDate>Tue, 11 Sep 2012 15:01:53 GMT</pubDate></item><item><title><![CDATA[Reply to Multichars (z.B. Umlaute) handlen on Wed, 12 Sep 2012 23:17:48 GMT]]></title><description><![CDATA[<p>Eine sehr nette kleine Library für grundlegendes Unicode- und UTF-8-Handling ist übrigens die libutf aus den Plan9ports. Hat ihren Ursprung im Plan-9-Betriebssystem, das als erstes OS überhaupt durchweg auf UTF-8 setze.</p>
<p><a href="http://swtch.com/plan9port/unix/" rel="nofollow">http://swtch.com/plan9port/unix/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250802</guid><dc:creator><![CDATA[Gammelbart]]></dc:creator><pubDate>Wed, 12 Sep 2012 23:17:48 GMT</pubDate></item></channel></rss>