[英]Reading binary file C++
请帮我。 我无法读取二进制文件。 该文件的长度为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;
}
需要任何帮助,谢谢!
只要您知道返回的std::string
包含二进制数据,请替换
std::string ret=buff;
与
std::string ret(buff, size);
您不能将二进制数据放在字符串中。 请记住,字符串以特殊字符'\\0'
终止,该特殊字符与值零相同。 如果二进制数据包含零,则与字符串的末尾相同。
您可能应该使用std::vector<int8_t>
来存储二进制数据。
问题在这里:
std::string ret = buff;
根据此 ,它:
“复制由s指向的以空终止的字符序列(C字符串)。”
因此,一旦到达0x00
字符,它将停止。
如果您要返回buff
(这是一种危险的做法),或者您的函数将char数组作为输入参数并仅将其存储在其中,则它应该可以工作。 并且您可能想返回一个长度指示器,因为否则C ++将不知道数组的大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.