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
(erledigt) OutputDebugString ohne Null
- Krishty
- Establishment
- Beiträge: 8343
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
(erledigt) OutputDebugString ohne Null
Zuletzt geändert von Krishty am 31.05.2010, 13:11, insgesamt 1-mal geändert.
- kimmi
- Moderator
- Beiträge: 1412
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: OutputDebugString ohne Null
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
Gruß Kimmi
- Krishty
- Establishment
- Beiträge: 8343
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: OutputDebugString ohne Null
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 ...kimmi hat geschrieben:? Du kannst doch Datenblöcke prinzipiell mit einer \0 versehen und bist mit dem Thema durch.
... 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]
Eine Allokation und eine Kopie. (Ich würde das zwar wegoptimieren, aber es wäre immernoch zu unsauber.)kimmi hat geschrieben:Wo ist das Problem, da noch eine Null-Terminierung anzuhängen?
Ja, nach zwei Tagen Suche habe ich auch keine wirkliche Hoffnung mehr, dass es den gibt.kimmi hat geschrieben:Und nein, ich kenne keinen anderen Call, der das kann.
- kimmi
- Moderator
- Beiträge: 1412
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: OutputDebugString ohne Null
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
Gruß Kimmi
- Krishty
- Establishment
- Beiträge: 8343
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: OutputDebugString ohne Null
Ja, so einen Puffer habe ich schon in einer Nachbarimplementierung. Sei's drum, rein damit :) Verdammte WinAPI, ich *hasse* Null-Terminated Strings.