Binärdaten interpretieren
-
std::vector<unsigned char> bytes(std::istream_iterator<char>(std::ifstream("my_binary_file", std::ios::binary).seekg(0)), std::istream_iterator<char>()); // ^ pseudo-lvalue-cast
-
camper schrieb:
std::vector<unsigned char> bytes(std::istream_iterator<char>(std::ifstream("my_binary_file", std::ios::binary).seekg(0)), std::istream_iterator<char>());camper ist ja so ein king...
Aber ich kann das auch (zweizeiler):
std::string str = dynamic_cast<std::ostringstream*>(&(std::ostringstream() << std::ifstream("my_binary_file", std::ios::binary).rdbuf()))->str() ; std::vector<unsigned char> bytes( str.begin(), str.end() );
-
Sone schrieb:
std::string str = dynamic_cast<std::ostringstream*>(&(std::ostringstream() << std::ifstream("my_binary_file", std::ios::binary).rdbuf()))->str() ; std::vector<unsigned char> bytes( str.begin(), str.end() );
Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?
-
ipsec schrieb:
Sone schrieb:
std::string str = dynamic_cast<std::ostringstream*>(&(std::ostringstream() << std::ifstream("my_binary_file", std::ios::binary).rdbuf()))->str() ; std::vector<unsigned char> bytes( str.begin(), str.end() );
Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?
Wie meinste das?
-
Sone schrieb:
Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?
Wie meinste das?
So wie ers geschrieben hat. Wozu den std::string str?
-
pumuckl schrieb:
Sone schrieb:
ipsec schrieb:
Und warum muss es vorher unbedingt in einen String, wenn man doch vom Stream direkt in den Vector lesen könnte?
Wie meinste das?
So wie ers geschrieben hat. Wozu den std::string str?
Ich kann doch wohl kaum
std::vector v( dynamic_cast<std::ostringstream*>(&(std::ostringstream() << std::ifstream("my_binary_file", std::ios::binary).rdbuf()))->str() );Schreiben. Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht. Also wie ohne Puffer?
-
Es gibt wohl einen quote-bug.
Edit: Pumuckl hat falsch gequotet.
-
Sone schrieb:
Ich kann doch wohl kaum
std::vector v( dynamic_cast<std::ostringstream*>(&(std::ostringstream() << std::ifstream("my_binary_file", std::ios::binary).rdbuf()))->str() );Schreiben. Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht. Also wie ohne Puffer?
Mit
istream_iterator, wie camper es bereits geschrieben hat.
-
ipsec schrieb:
Sone schrieb:
Ich kann doch wohl kaum
std::vector v( dynamic_cast<std::ostringstream*>(&(std::ostringstream() << std::ifstream("my_binary_file", std::ios::binary).rdbuf()))->str() );Schreiben. Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht. Also wie ohne Puffer?
Mit
istream_iterator, wie camper es bereits geschrieben hat.-.-
Ich meinte, meine Version. Campers ist die mit Streamiteratoren. Ich meinte meine mit dem Stringstream. Klar, dass die nicht so gut ist wie campers, ich wollte sehen ob ich nen zwei/ein-zeiler hinbekomme

-
Sone schrieb:
Die start-end iteratorenpaar Version funktioniert hier dank prvalue auch nicht.
lambda
auto v = [](std::ostringstream&& s){ return s << std::ifstream("my_binary_file", std::ios::binary).rdbuf(), [](std::string s){ return std::vector<unsigned char>(begin(s), end(s)); }(s.str()); }(std::ostringstream());