请帮帮我。我无法读取二进制文件。该文件的长度是198944年,但我的代码读取374.我试图使用fread,ifstream,WinAPI ReadFile。 这是读取功能的文件:读取二进制文件C++
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'得到最终的大小?您不能在字符串中存储二进制内容。 – 2013-02-15 06:33:52
该文件应该是一个ASCII文本文件,你想加载到一个单一的'std :: string'?如果不是,请使用不同的容器。 (如'std :: vector'或类似的东西)。 –
WhozCraig
2013-02-15 06:42:14
顺便说一下,'fseek(binary_stream,offset,SEEK_END)'不能保证工作(根据1999年的C标准)。 – 2013-02-15 07:15:17