【发布时间】:2015-11-01 07:11:35
【问题描述】:
这是我正在尝试的代码:
ifstream fileReader("server_data\\test2.jpg", ios::in | ios::binary);
char buffer[RESP_LENGTH];
memset(buffer, '\0', RESP_LENGTH);
if (fileReader.is_open())
{
fileReader.seekg(0);
fileReader.read(buffer, RESP_LENGTH);
cout << buffer<<endl<<"Length: "<<strlen(buffer);
}
fileReader.close();
它只是读取前几个字节。它也因文件而异。
我怀疑,可能它得到一个评估为 NULL 的字符,因此我的长度和字符串只占一小部分?
任何想法到底发生了什么以及如何解决它?
【问题讨论】:
-
我无法判断
ifstream仅从中读取几个字节。不要使用strlen来测量二进制数据的长度。在这种情况下,istream::gcount 对于获取读取的长度很有用。
标签: c++ file-io binaryfiles ifstream