<?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 wchar_t in Visual Studio 2008]]></title><description><![CDATA[<p>Hallo, ich benutze den Visual C++ 2008 Express Edition compiler. Leider funktioniert hier folgender Code nicht so, wie ich das will:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
using namespace std;

int main()
{
    wstring text(L&quot; &quot;); //stellt Euch hier ein paar kyrillische Buchstaben vor
                        //kann das Forum offensichtlich nicht anzeigen :)
    wcout&lt;&lt;text; //Konsole bleibt leer
    wofstream schreiben(L&quot;wtest.txt&quot;);
    schreiben&lt;&lt;text; //das textdokument wird zwar erstellt, bleibt aber leer
    schreiben.close();
}
</code></pre>
<p>Ich habe schon im Release Modus unter Projekt -&gt; konsolenanwendung-Eigenschaften -&gt; Allgemein -&gt; Zeichensatz auf Unicode und Multi-Byte Zeichensatz gestellt, allerdings ohne Erfolg. Was mache ich also falsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249124/frage-zu-wchar_t-in-visual-studio-2008</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 16:19:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249124.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Sep 2009 01:16:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 01:16:17 GMT]]></title><description><![CDATA[<p>Hallo, ich benutze den Visual C++ 2008 Express Edition compiler. Leider funktioniert hier folgender Code nicht so, wie ich das will:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
using namespace std;

int main()
{
    wstring text(L&quot; &quot;); //stellt Euch hier ein paar kyrillische Buchstaben vor
                        //kann das Forum offensichtlich nicht anzeigen :)
    wcout&lt;&lt;text; //Konsole bleibt leer
    wofstream schreiben(L&quot;wtest.txt&quot;);
    schreiben&lt;&lt;text; //das textdokument wird zwar erstellt, bleibt aber leer
    schreiben.close();
}
</code></pre>
<p>Ich habe schon im Release Modus unter Projekt -&gt; konsolenanwendung-Eigenschaften -&gt; Allgemein -&gt; Zeichensatz auf Unicode und Multi-Byte Zeichensatz gestellt, allerdings ohne Erfolg. Was mache ich also falsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771248</guid><dc:creator><![CDATA[wnick]]></dc:creator><pubDate>Thu, 03 Sep 2009 01:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 01:32:49 GMT]]></title><description><![CDATA[<p>Kann dein Editor, mit dem du dir die Ausgabe anschaust, die Zeichen überhaupt anzeigen? Überprüf das doch mal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771252</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 03 Sep 2009 01:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 01:46:53 GMT]]></title><description><![CDATA[<p>Naja, das Textdokument ist 0 Byte groß. Zum Anschauen benutze ich einfach den Texteditor von Windows...<br />
Aber ich habe gerade folgendes gesehen:</p>
<pre><code class="language-cpp">cout&lt;&lt;text.size(); //Gibt 5 aus, das stimmt auch

wcout&lt;&lt;text.size(); //Gibt nichts aus
</code></pre>
<p>Anscheinend kann meine Konsole nicht mit wcout umgehen Oo Kann das sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771253</guid><dc:creator><![CDATA[wnick]]></dc:creator><pubDate>Thu, 03 Sep 2009 01:46:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 02:16:58 GMT]]></title><description><![CDATA[<p>Hm, ich habe jetzt mal ein bisschen gegooglelt, aber keiner der Tipps konnte helfen.</p>
<pre><code class="language-cpp">wstring text(L&quot;\u0430\u043A\u043C\u0430\u043B&quot;); //escapesequenzen statt den richtigen Buchstaben
wcout&lt;&lt;text; //noch immer kein Output in die Konsole
cout&lt;&lt;text.size(); //gibt 5 aus (was stimmt)
wcout&lt;&lt;text.size(); //immernoch kein Output

wofstream schreiben(L&quot;wtest&quot;, ios::binary); //binär in Datei schreiben
schreiben&lt;&lt;text;                            //wieder wird eine leere, 0 byte große
                                            //Datei namens &quot;wtest&quot; erstellt
schreiben.close();
</code></pre>
<p>Und das sowohl bei &quot;unicode&quot; als auch &quot;multi-byte&quot; projekt Settings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771255</guid><dc:creator><![CDATA[wnick]]></dc:creator><pubDate>Thu, 03 Sep 2009 02:16:58 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 06:56:32 GMT]]></title><description><![CDATA[<p>Ev. hilfts weiter:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-244120-and-highlight-is-konsole+kyrillisch.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-244120-and-highlight-is-konsole+kyrillisch.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771289</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 03 Sep 2009 06:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 11:12:40 GMT]]></title><description><![CDATA[<p>Ich hoffe du hast schon geprüft, ob der Code mit lateinischen Buchstaben so funktioniert wie er soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771468</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Thu, 03 Sep 2009 11:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 16:19:32 GMT]]></title><description><![CDATA[<p>It0101 schrieb:</p>
<blockquote>
<p>Ich hoffe du hast schon geprüft, ob der Code mit lateinischen Buchstaben so funktioniert wie er soll?</p>
</blockquote>
<p>Ja klar. Ich teste gerade mit folgendem Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
using namespace std;
int main()
{
    wstring wtext(L&quot;\u0430\u043A\u043C\u0430\u043B&quot;); //auch schon probiert: statt der escape sequenzen die kyrillischen Buchstaben
    string text(&quot;test&quot;);

    wofstream wschreiben(&quot;wtest&quot;); //auch schon probiert: wofstream wschreiben(L&quot;wtest&quot;);
    ofstream  schreiben(&quot;test&quot;);

    schreiben&lt;&lt;text;   // in &quot;test&quot; steht &quot;test&quot; drinne. Stimmt!
    wschreiben&lt;&lt;wtext; // &quot;wtest&quot; bleibt leer

    return 0;
}
</code></pre>
<p>Herausgefunden habe ich, dass die <strong>Windows</strong> Konsole nur ASCII anzeigen kann. Also beschränke ich mich jetzt auf das schreiben/lesen von Dateien.</p>
<p>theta schrieb:</p>
<blockquote>
<p>Ev. hilfts weiter:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-244120-and-highlight-is-konsole+kyrillisch.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-244120-and-highlight-is-konsole+kyrillisch.html</a></p>
</blockquote>
<p>In einem Link in dem artikel habe ich jetzt folgenden Codeschnipsel gefunden:</p>
<pre><code class="language-cpp">//include &lt;locale&gt;

wofstream my_of(&quot;myfile.txt&quot;);

locale loc(locale::classic(), new codecvt_utf8&lt;wchar_t&gt;);  // Locale: von Classic (US-ASCII) nach UTF-8
my_of.imbue(loc);

my_of &lt;&lt; L&quot;Hello&quot; &lt;&lt; endl;
</code></pre>
<p>Allerdings kompiliert es bei mir nicht:</p>
<pre><code>1&gt;.\main.cpp(35) : error C2061: Syntaxfehler: Bezeichner 'codecvt_utf8'
1&gt;.\main.cpp(35) : error C2664: 'std::locale::locale(const char *,std::locale::category)': Konvertierung des Parameters 1 von 'const std::locale' in 'const char *' nicht möglich
1&gt;        Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
</code></pre>
<p>Was mache ich hier falsch? ich will doch nur kyrillische Buchstaben in der Datei stehen haben <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771718</guid><dc:creator><![CDATA[wnick]]></dc:creator><pubDate>Thu, 03 Sep 2009 16:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 18:38:06 GMT]]></title><description><![CDATA[<p>Versuchs mal so:</p>
<pre><code class="language-cpp">// Das müsste eigentlich funktionieren, ist aber jetzt nur mit UTF16 Little Endian getestet
// Siehe auch http://de.wikipedia.org/wiki/Byte_Order_Mark
template&lt;typename ValueType&gt;
std::vector&lt;char&gt; getByteOrderMark()
{
	assert( CHAR_BIT == 8 );
	assert( sizeof(unsigned short) == 2 );
	assert( sizeof(unsigned int) == 4 );

	const unsigned char utf8[] = { 0xEF, 0xBB, 0xBF };
	const char* utf8ptr = reinterpret_cast&lt;const char*&gt;( utf8 );
	if ( sizeof(ValueType) == 1 )
		return std::vector&lt;char&gt;( utf8ptr, utf8ptr+sizeof(utf8) );

	const unsigned short utf16 = 0xFEFF;
	const char* utf16ptr = reinterpret_cast&lt;const char*&gt;( &amp;utf16 );
	if ( sizeof(ValueType) == 2 )
		return std::vector&lt;char&gt;( utf16ptr, utf16ptr+sizeof(utf16) );

	const unsigned int utf32 = 0x0000FEFF;
	const char* utf32ptr = reinterpret_cast&lt;const char*&gt;( &amp;utf32 );
	if ( sizeof(ValueType) == 4 )
		return std::vector&lt;char&gt;( utf32ptr, utf32ptr+sizeof(utf32) );

	assert( 0 );
	return std::vector&lt;char&gt;();
}

int main()
{
    std::wstring kyrill = L&quot;...&quot;;
    std::ofstream file( &quot;test.txt&quot;, std::ios::binary );

    std::vector&lt;char&gt; bom = getByteOrderMark&lt;wchar_t&gt;();
	file.write( &amp;bom[0], bom.size() );
	file.write( reinterpret_cast&lt;const char*&gt;(kyrill.c_str()), kyrill.length()*sizeof(wchar_t) );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1771811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771811</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 03 Sep 2009 18:38:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Thu, 03 Sep 2009 22:37:15 GMT]]></title><description><![CDATA[<p>Wieso bietet C++ denn Mittel wie wofstream und wstring an, wenn man es am Ende (wie Bandestrand gezeigt hat) selbst implementieren muss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771905</guid><dc:creator><![CDATA[wnick]]></dc:creator><pubDate>Thu, 03 Sep 2009 22:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Fri, 04 Sep 2009 07:17:06 GMT]]></title><description><![CDATA[<p>Weil es einen Unterschied gibt zwischen &quot;wie und wo speichere ich etwas&quot; (std::wstring etc.) und &quot;wie und wo gebe ich etwas aus&quot; (std::wcout, std::fstream, etc.).<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771971</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 04 Sep 2009 07:17:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wchar_t in Visual Studio 2008 on Fri, 04 Sep 2009 09:00:37 GMT]]></title><description><![CDATA[<p>C++ bietet dir die Infrastruktur, aber wenn du die Stream-Operatoren benutzt, dann benötigst du auch ein entsprechendes Locale um die Zeichenkette entsprechend zu speichern. Und dummerweise wurden keine Locales für die Standardzeichensätze spezifiziert. Eine Standardbibliothek welche diese mitliefert ist die von Dinkumware, allerdings kostet die ein bischen was.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1772045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1772045</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Fri, 04 Sep 2009 09:00:37 GMT</pubDate></item></channel></rss>