2012-04-15 9 views
0

Ich habe Char-Array, und ich möchte es in TXT-Datei schreiben, aber in Bytes.Schreibe Byte zu ofstream in C++

ofstream sw("C:\\Test.txt"); 
for(int i = 0; i < 256; i++) 
{ 
    sw << (byte)myArray[i]; 
} 

Dies wird Zeichen in die Datei schreiben, aber ich will Bytes schreiben. Wenn es char 'a' gibt, möchte ich '97' schreiben. Vielen Dank.

+2

A 'char' ist per Definition ein Byte, so dass Ihre Frage ein bisschen unsinnig ist, aber Sie wollen wahrscheinlich' sw.write() '. – ildjarn

+0

Wie ist 'Byte' definiert? –

+0

Willst du '9 'und' 7'' schreiben oder binäres Rohbyte? – jrok

Antwort

1
ofstream sw("C:\\Test.txt"); 
for(int i = 0; i < 256; i++) 
{ 
    sw << (int)myArray[i]; 
} 

Dies wird Ihnen ein Zeichen 'a' in einen int (oder Byte) Wert 97

+0

Vielen Dank. Es ist genau das, wonach ich gesucht habe. EDIT: Es funktioniert nicht, für 'í' wird es -19 schreiben. Also wie schreibe ich das richtig? – Hlavson

+1

@Hlavson: '(int) (unsigniertes Zeichen) mArray [i]'. Vermutlich genügt auch nur '(unsigned char) mArray [i]'. – celtschk

+0

Ja, das funktioniert völlig korrekt. – Hlavson

4

Um ein Byte oder eine Gruppe von Bytes, die mit std :: fstream oder std :: ofstream zu schreiben, konvertieren verwenden Sie die write() Funktion: std::ostream::write()

const int ArraySize = 100; 
Byte byteArray[ArraySize] = ...; 

std::ofstream file("myFile.data"); 

if(file) 
{ 
    file.write(&byteArray[0], ArraySize); 
    file.write(&moreData, otherSize); 
}