Schreiben in stdout mit Zeichen-Array (nicht Null beendet) c / c ++

7

Was ist die einfachste Art, mit einem Zeichen-Array in stdout zu schreiben? Ich möchte ein Stück eines viel größeren Arrays ausgeben, und das Stück ist nicht nullterminiert. Ich möchte vermeiden, das Slice in eine "richtige" nullterminierte C-Zeichenfolge zu kopieren.

    
chowey 28.08.2013, 18:02
quelle

5 Antworten

13

Es gibt eine ziemlich offensichtliche Lösung, die ich zuerst nicht gefunden habe. std::cout ist eine Instanz von ostream .

%Vor%

also macht std::cout.write den Trick.

    
chowey 28.08.2013, 18:16
quelle
4

std::copy scheint genau das zu tun, was Sie wollen:

%Vor%

In diesem Beispiel wird auf die Standardausgabe geschrieben: cde .

Hier ist ein Live-Beispiel.

    
Pierre Fourgeaud 28.08.2013 18:17
quelle
1

Wenn Sie die Grenzen des Zeichen-Arrays kennen, könnten Sie schreiben:

%Vor%

Sie müssen nur sicherstellen, dass min_indx zwischen 0 und N-1 liegt und max_indx zwischen 0 und N liegt.

Da wir alle Bibliotheksfunktionen mögen, um Dinge zu tun, hier ist der Weg, es mit std::copy :

zu tun %Vor%     
pippin1289 28.08.2013 18:07
quelle
1

ostream::write sollte funktionieren.

%Vor%

Bearbeiten

Das Erstellen eines separaten Ostream-Objekts ist nicht erforderlich, da std::cout selbst ein Ostream-Objekt ist. Also ist std::cout.write ausreichend.

    
Appleshell 28.08.2013 18:17
quelle
1

Ok, das ist die "Abteilung für dumme Ideen":

%Vor%     
Mats Petersson 28.08.2013 18:11
quelle

Tags und Links