Ofstream: Hexadezimal schreiben
-
Hallo,
ich möchte einen Text über die Konsole
einlesen und diesen dann Hexadezimal in
eine Datei schreiben. Ich habe schon
mehrere Varianten versucht, doch bisher
funktioniert es noch nicht.ofstream output; string print; output.open("test.txt", ios_base::out); cin >> print; output << print;
0x0ERROR
-
Wie sieht denn ein Text in Hexadezimal aus? Meinst du die Zeichencodes der einzelnen Buchstaben?
-
std::hex
Beispielhafte Verwendung ist auf der Seite beschrieben.EDIT: Koenntest ja dann einfach ueber den Text iterieren und dann die Zeichen-Codes hexadezimal rausschmeissen, wenn es das ist, was du willst.
-
Hier noch die übliche Antwort, die hier im Forum auf ungenaue Fragen erfolgt:
#include <iostream> #include <algorithm> #include <iomanip> #include <iterator> int main() { using namespace std; copy(istream_iterator<unsigned char>(cin), istream_iterator<unsigned char>(), ostream_iterator<int>(cout << hex, " ")); }
Siehe:
http://ideone.com/qFzlw7
und
http://www.c-plusplus.net/forum/200753
-
SeppJ schrieb:
Wie sieht denn ein Text in Hexadezimal aus? Meinst du die Zeichencodes der einzelnen Buchstaben?
Ja, ich meine die Zeichencodes der Buchstaben. Und anhand
der Zeichencodes soll dann der Text geschrieben werden.0x0ERROR
-
0x0ERROR schrieb:
SeppJ schrieb:
Wie sieht denn ein Text in Hexadezimal aus? Meinst du die Zeichencodes der einzelnen Buchstaben?
Ja, ich meine die Zeichencodes der Buchstaben. Und anhand
der Zeichencodes soll dann der Text geschrieben werden.0x0ERROR
Dann hast du ja schon eine passende Antwort. In weniger STL'igerer Sprache steht da: "Lese solange Zeichen wie du kannst, gib sie als Zahl aus. Benutz vorher den Manipulator
hex
."
-
SeppJ schrieb:
Dann hast du ja schon eine passende Antwort. In weniger STL'igerer Sprache steht da: "Lese solange Zeichen wie du kannst, gib sie als Zahl aus. Benutz vorher den Manipulator
hex
."Nein, da steht: "Lese einzelne Zeichen ein, flushe dabei jedesmal cout und übersprünge alle Whitespaces und gib sie dann hexadezimal formatiert aus mit einem Leerzeichen dazwischen und am Schluss."
-
stelli schrieb:
SeppJ schrieb:
Dann hast du ja schon eine passende Antwort. In weniger STL'igerer Sprache steht da: "Lese solange Zeichen wie du kannst, gib sie als Zahl aus. Benutz vorher den Manipulator
hex
."Nein, da steht: "Lese einzelne Zeichen ein, flushe dabei jedesmal cout und übersprünge alle Whitespaces und gib sie dann hexadezimal formatiert aus mit einem Leerzeichen dazwischen und am Schluss."
Stimmt. Man füge dem Eingabestream noch ein
noskipws
an. Wen das flushen bei cin/cout stört, der nehme einen istreambuf_iterator. Für Dateien ist es egal, da diese sowieso nicht ge-tie-ed sind.Unnötig komplizierte Version:
http://ideone.com/GjzOLxDas nachgeschleppte Leerzeichen ist mir einfach mal egal.
-
SeppJ schrieb:
Unnötig komplizierte Version:
http://ideone.com/GjzOLx
[istreambuf_iterator<char>((cin >> noskipws).rdbuf())
]
lol?