Warum formatiert printf Unicode-Parameter nicht?

Wenn Sie mit printf eine Doppelbyte-Zeichenfolge in eine Einzelbyte-Zeichenfolge formatieren:

<code>printf("%ls\n", L"s:\\яшертыHello");   // %ls for a wide string (%s varies meaning depending on the project's unicode settings).
</code>

Es ist klar, dass einige Zeichen nicht als ASCII-Zeichen dargestellt werden können. Manchmal habe ich also ein Verhalten beobachtet, bei dem Doppelbyte-Zeichen in ein '?' Zeichen markieren. Dies scheint jedoch von den jeweiligen Charakteren abzuhängen. Für den obigen Ausdruck lautet die Ausgabe:

<code>s:\
</code>

Ich hatte gehofft, ich könnte etwas bekommen wie:

<code>s:\??????Hello
</code>

Ich fürchte, ich habe das Beispiel verloren, aber ich denke, für eine Zeichenfolge, als sie auf Unicode-Zeichen stieß, wurde die erste durch ein '?' und dann den Rest aufgegeben.

Meine Frage ist also, was passieren soll, wenn Sie eine breite Zeichenfolge in eine Einzelbytezeichenfolge formatieren. Dokumentation hier:http://msdn.microsoft.com/en-us/library/hf4y5e3w.aspx sagt "Zeichen werden bis zum ersten Nullzeichen angezeigt". Aber das sehe ich nicht. Ist dies ein Fehler in printf, oder ist das Verhalten, das ich sehe, irgendwo dokumentiert, wenn ja, wo?

Danke für Ihre Hilfe.

AKTUALISIEREN

Vielen Dank für die Antworten von Leuten, die mir Alternativen zur Verwendung von printf gegeben haben. Ich werde zu einer Alternative wechseln, aber ich bin wirklich neugierig, warum printf kein verlässliches dokumentiertes Verhalten aufweist. Es sieht fast so aus, als ob der Implementierer alles daran gesetzt hätte, dass dies nicht funktioniert.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage