我试图以某种方式获取任何文件的表示(我的意思是.mp3
,.mp4
,.jpg
,.txt
,...)这使得我可以使用它,就像它是一个字符串,将该表示保存在一个字符'数组或字符串本身。
我不知道如何提取这些信息......可能是十六进制代码,字节级甚至是位级别。我正在寻找使用fstream
类的东西,但不一定。
提前致谢。
答案 0 :(得分:1)
用于存储二进制数据的字符串是错误的。请考虑使用std::vector<unsigned char>
或类似内容。然后你可以写
std::ifstream is("myfile.mp3", std::ifstream::binary);
// Find the length of the file
is.seekg(0, is.end);
std::streampos length = is.tellg();
is.seekg(0, is.beg);
// Create a vector to read it into
std::vector<unsigned char> bytes(length);
// Actually read data
is.read((char *)&bytes[0], length);
// Close the file explicitly, since we're finished with it
is.close();
数据将以bytes
结尾。请注意,我们依赖于std::vector
的属性,即它分配了一块连续的内存。 (在C ++ 11中,您可能更愿意编写bytes.data()
而不是&bytes[0]
。)