<?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[String umwandeln]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich möchte Strings umwandeln. Wie macht man das in C++?</p>
<p>1. Von std::string nach char*</p>
<pre><code class="language-cpp">string From=&quot;ssss&quot;;
const char *To;

To = From.c_str();
// dann noch den char kopieren damit das const weg ist.
</code></pre>
<p>2. Von char* nach std::string</p>
<pre><code class="language-cpp">string To;
const char *From=&quot;ssss&quot;;

ostringstream oSs;
oSs &lt;&lt; From ;
To = oSs.str();
</code></pre>
<p>3. Von std::string nach wchar_t?</p>
<pre><code class="language-cpp">string From=&quot;ssss&quot;;
const wchar_t *To;
To = new wchar_t[From.length()*2+1];
mbstowcs( wchar_t, From.c_str(), From.length());
// Ist mbstowcs() nicht altes C Zeug aus der stdio.h? Gibt es da etwas besseres.
</code></pre>
<p>4. Von wchar_t std::string?</p>
<pre><code class="language-cpp">// Hier hänge ich momentan fest:
wchar_t *From=L&quot;aaaa&quot;;
std::string To;

ostringstream oSs;
oSs &lt;&lt; From ;
To = oSs.str();
MessageBox(0,To.c_str(),0,0); // Hier steht nur eine Zahl drin.
</code></pre>
<p>Habt Ihr zu den einzelnen Umwandlungen bessere Ideen? Es sollte möglichst kurz und die Speicherverwaltung einfach sein. Ich möchte bei einem Schema bleiben. Entweder nur die alten C Funktionen verwenden oder die ostringstream Objekte von C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177826/string-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Fri, 26 Jun 2026 20:13:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177826.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Apr 2007 13:21:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 13:21:19 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich möchte Strings umwandeln. Wie macht man das in C++?</p>
<p>1. Von std::string nach char*</p>
<pre><code class="language-cpp">string From=&quot;ssss&quot;;
const char *To;

To = From.c_str();
// dann noch den char kopieren damit das const weg ist.
</code></pre>
<p>2. Von char* nach std::string</p>
<pre><code class="language-cpp">string To;
const char *From=&quot;ssss&quot;;

ostringstream oSs;
oSs &lt;&lt; From ;
To = oSs.str();
</code></pre>
<p>3. Von std::string nach wchar_t?</p>
<pre><code class="language-cpp">string From=&quot;ssss&quot;;
const wchar_t *To;
To = new wchar_t[From.length()*2+1];
mbstowcs( wchar_t, From.c_str(), From.length());
// Ist mbstowcs() nicht altes C Zeug aus der stdio.h? Gibt es da etwas besseres.
</code></pre>
<p>4. Von wchar_t std::string?</p>
<pre><code class="language-cpp">// Hier hänge ich momentan fest:
wchar_t *From=L&quot;aaaa&quot;;
std::string To;

ostringstream oSs;
oSs &lt;&lt; From ;
To = oSs.str();
MessageBox(0,To.c_str(),0,0); // Hier steht nur eine Zahl drin.
</code></pre>
<p>Habt Ihr zu den einzelnen Umwandlungen bessere Ideen? Es sollte möglichst kurz und die Speicherverwaltung einfach sein. Ich möchte bei einem Schema bleiben. Entweder nur die alten C Funktionen verwenden oder die ostringstream Objekte von C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259276</guid><dc:creator><![CDATA[Mokka]]></dc:creator><pubDate>Wed, 04 Apr 2007 13:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 13:24:59 GMT]]></title><description><![CDATA[<p>2.:</p>
<pre><code class="language-cpp">string  To = &quot;From&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1259280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259280</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 04 Apr 2007 13:24:59 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 13:25:25 GMT]]></title><description><![CDATA[<p>@1: Wenn deine Zielfunktion nicht wirklich einen nicht-konstanten char-Zeiger braucht, kannst du dir das Kopieren ersparen und direkt mit From.c_str() arbeiten.</p>
<p>@2: Warum so umständlich? Eine direkte Zuweisung <code>To = From;</code> reicht völlig aus.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5290">@3</a>/4: Schau dir mal widen() (char-&gt;wchar_t) und narrow() (wchar_t-&gt;char) an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259281</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 04 Apr 2007 13:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 14:31:24 GMT]]></title><description><![CDATA[<p>Vielen Dank zu 1 und 2.</p>
<p>Zu 3 und 4:<br />
Gibt es da nichts einfacheres? <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-285374.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-285374.html</a></p>
<pre><code class="language-cpp">char Narrow[6] = &quot;Hallo&quot;;
wchar_t Widen[6];
_USE(cout.getloc(), ctype&lt;wchar_t&gt; ).widen(Narrow, Narrow+6, Widen);
</code></pre>
<p>Sowas werde ich nicht in meinen Source schreiben! Dann lieber der einfache stdio.h Aufruf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259320</guid><dc:creator><![CDATA[Mokka]]></dc:creator><pubDate>Wed, 04 Apr 2007 14:31:24 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 14:35:01 GMT]]></title><description><![CDATA[<p>Mokka schrieb:</p>
<blockquote>
<p>Sowas werde ich nicht in meinen Source schreiben!</p>
</blockquote>
<p>Warum nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259325</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 04 Apr 2007 14:35:01 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 14:39:41 GMT]]></title><description><![CDATA[<p>Mokka schrieb:</p>
<blockquote>
<p>Sowas werde ich nicht in meinen Source schreiben! Dann lieber der einfache stdio.h Aufruf.</p>
</blockquote>
<p>Wenn du &quot;Sowas&quot; nicht in immer schreiben willst, sollte es doch kein Problem für dich sein es in eine Funktion zu packen,<br />
z.B.:</p>
<pre><code class="language-cpp">std::string wchar_tToString(wchar_t* str);
</code></pre>
<p>Irgendwie &quot;Sowas&quot; halt.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259329</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Wed, 04 Apr 2007 14:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 14:54:09 GMT]]></title><description><![CDATA[<p>Es geht nur darum einen string in einen wchar_t umzuwandeln (und andersrum). Das ist zu kompilziert. Ausserdem verstehe ich nicht was da gemacht wird.</p>
<p>wchar_t Widen[6];<br />
_USE(cout.getloc(), ctype&lt;wchar_t&gt; ).widen(Narrow, Narrow+6, Widen);</p>
<p>Die Makrodefinitionen kann ich lustig in den MFC rekrusiv weiterverfolgen ohne das es für mich Sinn ergibt. Was die Parameter von widen darstellen sollen kann ich auch nur erraten. (Die VS6 IDE macht keine Vorschläge; ich habe keine AdminRechte, kann also auch nichts anderes installieren.)</p>
<p>Wenn es die Meinung der std::string Entwicklern war mbstowcs() zu verwenden und nicht myString.wchar_t() zu implementieren werde ich nicht dagegen halten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259336</guid><dc:creator><![CDATA[Mokka]]></dc:creator><pubDate>Wed, 04 Apr 2007 14:54:09 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 14:56:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13710">@Don06</a>: String Operationen sind grundlegend. Ich werde keine neuen String Operationen schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259337</guid><dc:creator><![CDATA[Mokka]]></dc:creator><pubDate>Wed, 04 Apr 2007 14:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 15:09:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Es geht nur darum einen string in einen wchar_t umzuwandeln (und andersrum). Das ist zu kompilziert.</p>
</blockquote>
<p>Du hast ein Designproblem, wie viele andere C++ler die string zu wstring und umgekehrt umwandeln wollen.</p>
<p>Wenn ich heute meine Software entwickle, dann so das sie immer keine Schwierigkeit mit Internationalisierung hat. Wie erreiche ich das? In dem ich grundsätzlich und durchgängig in meinen Programmen und Libs std::wstring benutze. (ich gehen jetzt von ISO-C++-Stdlib aus)</p>
<p>Nun, wenn du jetzt konvertieren willst, dann gebe ich dir folgenden Tip:<br />
Knall folgende Headerdatei in deinen Header-Pfad rein, wo du ihn immer mit einem include erreichen kannst: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-168607-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-string2wstring.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-168607-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-string2wstring.html</a></p>
<p>Wenn du irgendwo einen string aus char's hast, lässt du es erst garnicht soweit kommen, mit diesem in deinem Programm weiter zu arbeiten. Konvertiere diesen umgehend an der Eingabe-Schnittstelle in einen wstring! Fertig!</p>
<p>Du muß die Konvertierung nur an den Eingabeschnittstellen platzieren. Im gaaanzen restlichen Programm/Library hat wstring das Sagen!</p>
<blockquote>
<p>Ausserdem verstehe ich nicht was da gemacht wird.</p>
</blockquote>
<p>Muß man auch nicht unbedingt. Du mußt nur wissen, das eine Konvertierung immer die Locales mit einbeziehen muß. Ein 8 bit in ein 16 bit umwandeln ist im prinzip einfach, aber nicht wenn es um Strings geht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259345</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 04 Apr 2007 15:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 16:19:46 GMT]]></title><description><![CDATA[<p>Hallo Archi,</p>
<p>Du hast mich überzeugt wstring als Basistyp zu benutzen. Die Probleme der Konversion bleiben dadurch aber unverändert. Ich muß immer noch in bestimmte Apis einen char*, wchar_t* oder einen BSTR scheiben bzw holen.</p>
<p>Die Disskussion mit NES-Spieler habe ich interssiert gelesen und ich kann ihm nur beipflichten. Für jemanden der normalerweise in einer Hochsprache programmiert ist es schwer verständlich das solch grundlegende Funktionen im C++ Standard nicht zur Verfügung stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259377</guid><dc:creator><![CDATA[Mokka]]></dc:creator><pubDate>Wed, 04 Apr 2007 16:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 16:33:05 GMT]]></title><description><![CDATA[<p>Mokka schrieb:</p>
<blockquote>
<p>Die Disskussion mit NES-Spieler habe ich interssiert gelesen und ich kann ihm nur beipflichten. Für jemanden der normalerweise in einer Hochsprache programmiert ist es schwer verständlich das solch grundlegende Funktionen im C++ Standard nicht zur Verfügung stehen.</p>
</blockquote>
<p>Diese Funktionen stehen doch zur Verfügung - das ANSI Kommitee kann aber nichts dafür, wenn du sie nicht richtig einsetzen kannst. (und was hindert dich daran, den von Artchi verlinkten Code zu nehmen und einzusetzen?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259385</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 04 Apr 2007 16:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 17:10:03 GMT]]></title><description><![CDATA[<p>Es geht doch nur darum einen String zu konvertieren. Haben wir einen char* muss nur gesagt werden welcher Lokalisation er angehört und das wir ihn nach Unicode konvertieren möchten. Oder andersrum.<br />
Man könnte also einfach eine Methode mit 2 Paramtern machen. Das da jetzt so ein komplizierter geschachtelter Makro_und_was_Weiß_ich Aufruf draus geworden ist kann man vermutlich nicht dem Ansi Institut anhängen.</p>
<p>Jemand der nicht mit C++ vertraut ist und Artchis Code sieht würde denken: Brilliant... es wäre aber trotzdem nicht nötig gewesen &quot;cout&quot; neu zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259415</guid><dc:creator><![CDATA[Mokka]]></dc:creator><pubDate>Wed, 04 Apr 2007 17:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to String umwandeln on Wed, 04 Apr 2007 18:18:48 GMT]]></title><description><![CDATA[<p>Solange APIs immer noch auf char* oder string bestehen, wird man leider um die Konvertierung nicht umhinkommen. Das stimmt leider. Wenn du dir aber z.B. die Win32-API anschaust, wirst du sehen, das diese vollständig auf wchar_t* aufbaut und somit perfekt mit wstring zusammen arbeitet.</p>
<p>Was das Komitee angeht: 1998 hatte man glaube ich andere Sorgen als da etwas rundes zu vereinbaren. Aber es gibt definitiv im C++98 Spezifikationen um z.B. Streams mit unterschiedlichen codierten Daten in wstrings einzulesen. Das Problem ist eher, das die Stdlib-Implementierungen der Compiler hier defizite aufweisen. <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>
<p>In der Boost-Lib gibt es z.B. einen entsprechenden UTF-8-Konverter nach C++-Stdlib-Spec für wstrings. Viele Boost-Libs, wie boost.regex, boost.Options usw. nutzen diese Möglichkeit:<br />
<a href="http://www.boost.org/libs/serialization/doc/codecvt.html" rel="nofollow">http://www.boost.org/libs/serialization/doc/codecvt.html</a></p>
<p>Von Dinkumware gibts eine seeehr umfangreiche Sammlung von Konvertern, mit allen möglichen Codings:<br />
<a href="http://www.dinkumware.com/manuals/?manual=compleat&amp;page=index_cvt.html" rel="nofollow">http://www.dinkumware.com/manuals/?manual=compleat&amp;page=index_cvt.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259479</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 04 Apr 2007 18:18:48 GMT</pubDate></item></channel></rss>