代码比较简单:
#include <iostream>
#include <fstream>
std::unique_ptr<char> get_file_content(const std::string& filename)
{
std::ifstream filestr(filename, std::ios::binary);
auto size = filestr.rdbuf() -> pubseekoff(0, std::ios::end, std::ios::in);
std::unique_ptr<char> pc(new char[size]);
filestr.rdbuf() -> pubseekpos(0, std::ios::in);
filestr.rdbuf() -> sgetn(pc.get(), size);
filestr.close();
return pc;
}
int main(int argc, char *argv[])
{
try {
//智能指针自动释放
std::shared_ptr<char> pc = get_file_content(std::string(argv[1]));
std::cout << pc << std::endl;
} catch (std::exception& e) {
std::cout << e.what() << std::endl;
}
return 0;
}
运行结果:
$ g++ -g -Wall -I. --std=c++11 -c read-binary-file.cpp -o read-binary-file
$ ./read-binary-file read-binary-file.cpp