【发布时间】:2013-02-15 06:32:17
【问题描述】:
请帮帮我。我无法读取二进制文件。该文件的长度是198944,但我的代码读取374。我尝试使用fread、ifstream、WinAPI ReadFile。 这是读取文件的函数:
std::string ReadThisFile(std::string aPath) {
FILE *inputstream = fopen(aPath.c_str(),"rb");
long size;
size_t result;
fseek(inputstream,0,SEEK_END);
size = ftell(inputstream);
rewind(inputstream);
char *buff = new char [size];
result = fread (buff,1,size,inputstream);
std::string ret=buff;
fclose(inputstream);
delete[]buff;
return ret;
}
需要任何帮助,谢谢!
【问题讨论】:
-
您是否使用
strlen来获得最终尺寸?您不能将二进制内容存储在字符串中。 -
该文件是否应该是您想要加载到单个
std::string中的 ASCII 文本文件?如果没有,请使用其他容器。 (比如std::vector<unsigned char>或类似的东西)。 -
顺便说一句,
fseek(binary_stream, offset, SEEK_END)不能保证工作(根据 1999 年的 C 标准)。