<?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[wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung]]></title><description><![CDATA[<p>Gibt es irgendeinen (wenns sein muss auch plattformabhängigen) Weg, aus einem <code>wchar_t</code> (bzw. auch aus einem einfachen <code>char</code> ) ein ucs-encodetes Zeichen zu bekommen?<br />
Der Standard bietet da ja z.Bsp. <code>use_facet</code> und <code>codecvt</code> an - aber imho gibt es keinen bereits implementierten Weg, an den ucs-Code des Zeichens zu kommen, da <code>wchar_t</code> nicht ucs-formatted ist(beim msvc zumindest nicht-da ist z.bsp. L'ä' das gleiche wie 'ä' - und da ist(zumindest in unserem ASCII-Zeichensatz) bekanntlich das erste Bit eine 1).</p>
<p>Noch mal zum Standard (speziell <a href="http://www.cplusplus.com/reference/std/locale/codecvt/in/" rel="nofollow">codevect::in</a>):<br />
Kann mir jemand eigtl sagen, ob man irgendwie den virtuellen Funktions-Aufruf wegbekommt (<a href="http://www.cplusplus.com/reference/std/locale/codecvt/do_in/" rel="nofollow">do_in</a>)? Der Compiler wird den Lookup in der V-Table ja nicht wegoptimieren können, obwohl er weiß, welches Objekt er hat. Weil da schon zur Compilezeit bekannt ist (weil Template-Parameter), was ich in was konvertieren möchte.<br />
Eigtl stören die paar Takte ja nicht, weil die Konvertierung wesentlich länger dauert - aber wenn ich einen String habe, der viele, nicht mit dem Zieltyp darstellbare, Zeichen enthält, wird die Funktion ja x-mal aufgerufen(zumindest, wenn man ein Fragezeichen oder so einfügt, ein Zeichen weiterspringt, und die Funktion dann erneut aufruft - was ja beim Chat oder Label/...-Beschriftungen sinnvoll ist)</p>
<p>Wenn wir einmal bei dem Thema fehlgeschlagene Konvertierung sind: Wenn ihr eine Funktion <code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code> hättet...<br />
Würde euch interessieren, ob bestimmte Zeichen nicht richtig umgewandelt worden sind? Falls ja (es gibt sicherlich Dinge, wo das wichtig ist, zu wissen): wie könnte man diese Benachrichtigung denn am tollsten zur Verfügung stellen?<br />
Mir fallen da 3 bzw. 4 Wege ein:<br />
1)<br />
<code>std::pair&lt;TO, bool /*exact*/&gt; ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code><br />
oder<br />
2)<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from, bool&amp; exact = true)</code><br />
oder<br />
3)<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code><br />
und<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from, bool&amp; exact)</code></p>
<p>die 2) würde ich atm eigtl bevorzugen, da man bei der 1) nicht mehr einfach <code>ConvertString&lt;std::wstring&gt;(&quot;asd&quot;)</code> schreiben kann und bei der 3) hätte man doppelten Code<br />
bei der 2) würde man allerdings in die Millionen Unterfunktionen immer eine Referenz mitübergeben müssen, obwohl der User die in &gt;99% der Fälle eh nicht haben möchte und man selbst sie auch nur in ganz bestimmten Fällen (-&gt; Ausnahmen) braucht:</p>
<p>Also noch<br />
4)<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code><br />
und<br />
<code>TO ConvertString_Throw&lt;FROM, TO&gt;(const FROM&amp; from)</code></p>
<p>Da gefällt mir aber erstens der Name nicht ganz und 2. hab ich halt auch wieder nen Haufen doppelten Code - es sei denn, ich implementiere die throw-Funktion so, dass sie 2x <code>ConvertString</code> aufruft (also das <code>to</code> quasi noch mal nach <code>FROM</code> umwandelt und die beiden <code>from</code> s vergleicht - das klingt allerdings so, als ob es der User auch gleich selbst machen könnte...)</p>
<p>Sry, ist ein wenig viel Text und mehrere Fragen geworden - ich hoffe, es nimmt sich trotzdem jemand die Zeit und gibt mir zumindest ein paar Stichpunkte(ich hab so gar extra Shift benutzt^^).</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257641/wchar_t-gt-ucs-std-codevect-konvertierung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 23:17:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257641.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 31 Dec 2009 14:48:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung on Thu, 31 Dec 2009 14:48:08 GMT]]></title><description><![CDATA[<p>Gibt es irgendeinen (wenns sein muss auch plattformabhängigen) Weg, aus einem <code>wchar_t</code> (bzw. auch aus einem einfachen <code>char</code> ) ein ucs-encodetes Zeichen zu bekommen?<br />
Der Standard bietet da ja z.Bsp. <code>use_facet</code> und <code>codecvt</code> an - aber imho gibt es keinen bereits implementierten Weg, an den ucs-Code des Zeichens zu kommen, da <code>wchar_t</code> nicht ucs-formatted ist(beim msvc zumindest nicht-da ist z.bsp. L'ä' das gleiche wie 'ä' - und da ist(zumindest in unserem ASCII-Zeichensatz) bekanntlich das erste Bit eine 1).</p>
<p>Noch mal zum Standard (speziell <a href="http://www.cplusplus.com/reference/std/locale/codecvt/in/" rel="nofollow">codevect::in</a>):<br />
Kann mir jemand eigtl sagen, ob man irgendwie den virtuellen Funktions-Aufruf wegbekommt (<a href="http://www.cplusplus.com/reference/std/locale/codecvt/do_in/" rel="nofollow">do_in</a>)? Der Compiler wird den Lookup in der V-Table ja nicht wegoptimieren können, obwohl er weiß, welches Objekt er hat. Weil da schon zur Compilezeit bekannt ist (weil Template-Parameter), was ich in was konvertieren möchte.<br />
Eigtl stören die paar Takte ja nicht, weil die Konvertierung wesentlich länger dauert - aber wenn ich einen String habe, der viele, nicht mit dem Zieltyp darstellbare, Zeichen enthält, wird die Funktion ja x-mal aufgerufen(zumindest, wenn man ein Fragezeichen oder so einfügt, ein Zeichen weiterspringt, und die Funktion dann erneut aufruft - was ja beim Chat oder Label/...-Beschriftungen sinnvoll ist)</p>
<p>Wenn wir einmal bei dem Thema fehlgeschlagene Konvertierung sind: Wenn ihr eine Funktion <code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code> hättet...<br />
Würde euch interessieren, ob bestimmte Zeichen nicht richtig umgewandelt worden sind? Falls ja (es gibt sicherlich Dinge, wo das wichtig ist, zu wissen): wie könnte man diese Benachrichtigung denn am tollsten zur Verfügung stellen?<br />
Mir fallen da 3 bzw. 4 Wege ein:<br />
1)<br />
<code>std::pair&lt;TO, bool /*exact*/&gt; ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code><br />
oder<br />
2)<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from, bool&amp; exact = true)</code><br />
oder<br />
3)<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code><br />
und<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from, bool&amp; exact)</code></p>
<p>die 2) würde ich atm eigtl bevorzugen, da man bei der 1) nicht mehr einfach <code>ConvertString&lt;std::wstring&gt;(&quot;asd&quot;)</code> schreiben kann und bei der 3) hätte man doppelten Code<br />
bei der 2) würde man allerdings in die Millionen Unterfunktionen immer eine Referenz mitübergeben müssen, obwohl der User die in &gt;99% der Fälle eh nicht haben möchte und man selbst sie auch nur in ganz bestimmten Fällen (-&gt; Ausnahmen) braucht:</p>
<p>Also noch<br />
4)<br />
<code>TO ConvertString&lt;FROM, TO&gt;(const FROM&amp; from)</code><br />
und<br />
<code>TO ConvertString_Throw&lt;FROM, TO&gt;(const FROM&amp; from)</code></p>
<p>Da gefällt mir aber erstens der Name nicht ganz und 2. hab ich halt auch wieder nen Haufen doppelten Code - es sei denn, ich implementiere die throw-Funktion so, dass sie 2x <code>ConvertString</code> aufruft (also das <code>to</code> quasi noch mal nach <code>FROM</code> umwandelt und die beiden <code>from</code> s vergleicht - das klingt allerdings so, als ob es der User auch gleich selbst machen könnte...)</p>
<p>Sry, ist ein wenig viel Text und mehrere Fragen geworden - ich hoffe, es nimmt sich trotzdem jemand die Zeit und gibt mir zumindest ein paar Stichpunkte(ich hab so gar extra Shift benutzt^^).</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830332</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 31 Dec 2009 14:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung on Sat, 02 Jan 2010 19:38:31 GMT]]></title><description><![CDATA[<p>*push* <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831075</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 02 Jan 2010 19:38:31 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung on Sun, 03 Jan 2010 00:02:06 GMT]]></title><description><![CDATA[<p>Ich habe mir jetzt nicht dein ganzes Posting durch gelesen. Aber generell kann man sagen, das man in der freien Wildbahn zu dem ganzen Zeichenkonvertierungen nichts gescheites finden wird. Da ist C++ im Open Source Umfeld echt lausig.</p>
<p>Wenn man wirklich ernsthaft mit Zeichenkonvertierungen was machen willst bzw. muß, ist die Dinkumware Library die einzige Lösung. Die hat nämlich die <a href="http://www.dinkumware.com/manuals/default.aspx?manual=compleat&amp;page=index_cvt.html" rel="nofollow">Conversions Library</a>. Da sind die wichtigsten <a href="http://www.dinkumware.com/manuals/default.aspx?manual=compleat&amp;page=index_cvt.html#Code%20Conversions" rel="nofollow">Codepages bei</a>. Bei denen steht, das die Binary Lizenz 800$ für 8 Entwickler kostet. Wenn du alleine bist, kannst du Glück haben und das vielleicht für 100$ bekommen. Keine Ahnung.</p>
<p>Jedenfalls ist mir das unerklärlich, warum es so was noch nicht als Open Source gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831207</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 03 Jan 2010 00:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung on Sun, 03 Jan 2010 00:17:02 GMT]]></title><description><![CDATA[<p>Die Multimedia-Bibliothek <a href="http://www.sfml-dev.org/" rel="nofollow">SFML</a> bietet Funktionalität im Bezug auf Unicode. In der Version 2.0, die momentan in Entwicklung (und nur über SVN zugänglich) ist, wurde einiges diesbezüglich geändert. <a href="http://www.sfml-dev.org/forum/viewtopic.php?t=1874" rel="nofollow">Hier</a> hat der Entwickler kurz was dazu gesagt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831211</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 03 Jan 2010 00:17:02 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung on Sun, 03 Jan 2010 09:40:44 GMT]]></title><description><![CDATA[<p>Was ist denn mit ICU?<br />
<a href="http://site.icu-project.org/" rel="nofollow">http://site.icu-project.org/</a><br />
Nützt das denn was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831267</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Sun, 03 Jan 2010 09:40:44 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung on Sun, 03 Jan 2010 20:12:08 GMT]]></title><description><![CDATA[<p>ICU klingt schon mal sehr gut - SFML klang mir zu umfangreich, aber ich werd mir beides bei Gelegenheit mal durchlesen - danke! : &gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831734</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 03 Jan 2010 20:12:08 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t -&amp;gt; ucs &#x2F; std::codevect &#x2F; Konvertierung on Sun, 03 Jan 2010 20:26:59 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>SFML klang mir zu umfangreich</p>
</blockquote>
<p>Du brauchst ja nicht die ganze Bibliothek zu nutzen. SFML ist in fünf Pakete unterteilt, welche einzeln kompiliert werden können. In deinem Fall bräuchtest du nur das System-Package.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831754</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 03 Jan 2010 20:26:59 GMT</pubDate></item></channel></rss>