typedef struct { char c[20]; int i; } header; void foo(std::string s) { std::ifstream ifs(s.c_str(), std::ios_base::binary | std::ios_base::in); if (ifs) {
Just use basic_istream<>::read() to read raw, unformatted byte data:
void foo(std::string s) { std::ifstream ifs(s.c_str(), std::ios_base::binary | std::ios_base::in); if (ifs) { char buffer[20]; if (!ifs.read(buffer, 20)) { // Handle error } } }