Seite 1 von 1

(erledigt) OutputDebugString ohne Null

Verfasst: 29.05.2010, 20:52
von Krishty
Hi,

Gibt es zu OutputDebugString() eine Alternative, die keinen nullterminierten String erwartet?

Ich benutze es zur Ausgabe eines ::std::basic_streambuf, wo eben auch Daten kommen, die keine Null am Ende haben … die Null von Hand anzufügen oder extra zu puffern erscheint mir als ein bisschen viel Aufwand für ein paar Buchstaben :/

Gruß, Ky

Re: OutputDebugString ohne Null

Verfasst: 31.05.2010, 11:51
von kimmi
Wo ist das Problem, da noch eine Null-Terminierung anzuhängen? Du kannst doch Datenblöcke prinzipiell mit einer \0 versehen und bist mit dem Thema durch. Und nein, ich kenne keinen anderen Call, der das kann.

Gruß Kimmi

Re: OutputDebugString ohne Null

Verfasst: 31.05.2010, 12:10
von Krishty
kimmi hat geschrieben:? Du kannst doch Datenblöcke prinzipiell mit einer \0 versehen und bist mit dem Thema durch.
Naja, die Sache ist nur, dass ich nicht kontrollieren kann, wann (nach wievielen Buchstaben eines Blocks, ob bei einer Null usw) der Stream-Buffer geflusht werden (OutputDebugString() aufgerufen) soll ...

... und ich habe Sorge, dass das irgendwann kracht. [Halbwissen]::std::cerr ist ungepuffert, eigentlich müssten die Buchstaben dann einzeln kommen und ich müsste nach jedem einzelnen eine Null anhängen um den Text an DebugOutputString() senden zu können, oder?[/Halbwissen]
kimmi hat geschrieben:Wo ist das Problem, da noch eine Null-Terminierung anzuhängen?
Eine Allokation und eine Kopie. (Ich würde das zwar wegoptimieren, aber es wäre immernoch zu unsauber.)
kimmi hat geschrieben:Und nein, ich kenne keinen anderen Call, der das kann.
Ja, nach zwei Tagen Suche habe ich auch keine wirkliche Hoffnung mehr, dass es den gibt.

Re: OutputDebugString ohne Null

Verfasst: 31.05.2010, 13:05
von kimmi
Ich hatte mal ein ähnliches Problem. Ich mußte das per temporären Puffer lösen, um eine Null-Terminierung garantieren zu können. Ich habe dann einen statischen Puffer per Thread angelegt, der nicht jedesmal erneu allokiert wird, sondern "nur" mit Nullen gefüllt wird.

Gruß Kimmi

Re: OutputDebugString ohne Null

Verfasst: 31.05.2010, 13:10
von Krishty
Ja, so einen Puffer habe ich schon in einer Nachbarimplementierung. Sei's drum, rein damit :) Verdammte WinAPI, ich *hasse* Null-Terminated Strings.