Re: STL-Streams und Unicode/UTF-16

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



Andreas Heyer wrote:
Warum funktioniert die Sache dann aber, wenn ich direkt ein FILE-Pointer
an den Streamkonstruktor übergebe? Wenn ich es über den Pfad mache, wird
doch intern auch nur fopen benutzt! Oder setzt der Stream irgendwo eine
andere Locale, so dass der CRT-Default überschrieben wird? Das wäre die
einzige Erklärung für mich. Nur warum ändert sich trotzdem die Facette,
ist die nicht jedesmal die gleiche?


So, ich hab' grade noch mal in den Sourcen gegraben und ich denke es ist ein
Bug dass sich der Konstruktor mit dem FILE* anders verhaelt. Bei VC8 hast
Du in jedem Konstruktor von basic_filebuf() bzw jeder
open()-Implementierung erst einen Call nach _Init() und danach einen nach
_Initcvt() welches die codecvc-Facette initialisiert, ausser bei dem
Konstruktor der einen FILE* nimmt, bei dem bleibt der Pointer auf Null
stehen und es wird halt genau das gemacht was Du richtig findest.

Uli

[1] Jedenfalls bin ich mir da zu 90% sicher, und das erklaert auch warum
auch std::wfstream() nur einen char-String im Konstruktor nimmt und keinen
wchar_t-String.

.



Relevant Pages

  • Re: STL-Streams und Unicode/UTF-16
    ... ist ein Bug dass sich der Konstruktor mit dem FILE* anders verhaelt. ... Zuerst brauchst Du so eine Facette, die ist ja nicht Bestandteil des ... Vermutung dass auch wfstream mit fopenund nicht wie man denken koennte ...
    (microsoft.public.de.vc)
  • Re: STL-Streams und Unicode/UTF-16
    ... Bug dass sich der Konstruktor mit dem FILE* anders verhaelt. ... _Initcvtwelches die codecvc-Facette initialisiert, ... Konstruktor der einen FILE* nimmt, bei dem bleibt der Pointer auf Null ... Der Filenamen hat nichts mit dem Templatetyp des Streams zu tun! ...
    (microsoft.public.de.vc)
  • Re: STL-Streams und Unicode/UTF-16
    ... genaugenommen die facet die das Locale verwendet) des Stream gesetzt. ... Benutzt man dagegen den Konstruktor mit FILE*, so unterbleibt dieser Schritt, kein facet, die eingelesenen Daten werden nicht interpretiert, sind also quasi roh. ...
    (microsoft.public.de.vc)
  • Re: STL-Streams und Unicode/UTF-16
    ... verwendet) des Stream gesetzt. ... Benutzt man dagegen den Konstruktor mit FILE*, ... Schritt, kein facet, die eingelesenen Daten werden nicht ...
    (microsoft.public.de.vc)