1
我创建了一个使用poco库文件FTPclientsession通过ftp下载二进制文件的C++应用程序。为了使用下面的代码,以计算字节的下载进度我将文件从一个IStream复制到一个ostream字节:将C++中的二进制文件从istream复制到ostream并不总是正确的
char c = 0;
istream is;
ostream os;
std::streamsize iter = 0;
is.get(c);
while (istr && ostr)
{
++iter;
os.put(c);
is.get(c);
}
return iter;
当我尝试下载一个1MB的文件,该文件在FTP服务器由1048576个字节(使用stat命令进行检查),大多数情况下,iter永远不会达到这个数字,但是从1048573到1048575的值减少1-3个字节。
很少会测量到正确的大小。我还检查了is.fail()并注意到测量不正确的情况下设置了故障位。
这是一个二进制文件的问题,与服务器连接不好或者我的代码有问题?