Ich verwende normalerweise stringstream
, um in In-Memory-String zu schreiben. Gibt es eine Möglichkeit, in einen Zeichenpuffer im Binärmodus zu schreiben? Betrachten Sie den folgenden Code ein:Gibt es binäre Speicher Streams in C++
stringstream s;
s << 1 << 2 << 3;
const char* ch = s.str().c_str();
Der Speicher bei ch
wird wie folgt aussehen: 0x313233 - der ASCII-Codes des Zeichens 1, 2 und 3. Ich bin nach einem Weg, um die binären Werte selbst zu schreiben. Das heißt, ich möchte 0x010203 im Speicher haben. Das Problem ist, dass ich in der Lage sein möchte, eine Funktion zu schreiben
void f(ostream& os)
{
os << 1 << 2 << 3;
}
Und entscheiden, welche Art von Stream zu verwenden. Etwas wie dieses:
mycharstream c;
c << 1 << 2 << 3; // c.data == 0x313233;
mybinstream b;
b << 1 << 2 << 3; // b.data == 0x010203;
Irgendwelche Ideen?
Das ist hex, nicht binär. Warum kannst du nicht 0x01, 0x02 usw. schreiben, obwohl ... das sind eigentlich echte ASCII-Zeichen. – jrockway
Er möchte, dass der Inhalt des Speichers (die tatsächlichen Bytes) 0x010203 (dezimal 66051) ist, nicht die Zeichenfolge "0x010203". – KeithB
Ich habe die Frage geändert. Hoffe es ist jetzt klarer. – FireAphis