gpt4 book ai didi

c++ - S3Client::GetObject with SetRange 返回错误数据?

转载 作者:行者123 更新时间:2023-11-30 03:16:22 28 4
gpt4 key购买 nike

我正在尝试读取从前 1048576 个字节开始的大型 AWS S3 对象的一段。我指定了我想要读取的字节范围,但我没有收到这些字节。返回的长度是正确的。

我在这方面还很陌生,所以我可能做错了什么,作为一名 C 程序员而不是 C++ 并没有太大帮助。

这是我的代码示例:

int   start=0, rbytes=0;

Aws::S3::S3Client s3_client;
Aws::S3::Model::GetObjectRequest read_object_request;
sprintf(range,"bytes=%lld-%lld",start,start+1048575);

read_object_request.SetBucket(container_name);
read_object_request.SetKey(object_name);
read_object_request.SetRange(range);
auto results = s3_client.GetObject(read_object_request);
if (results.IsSuccess())
{
rbytes = results.GetResult().GetContentLength();
std::cout << rbytes << " bytes read" << std::endl;
}
memcpy(bdata,results.GetResult().GetBody().rdbuf(),rbytes);

然后我转储 bdata 缓冲区,这不是我所期望的。当我重复执行代码时,一个新的实例,它返回不同的数据。

虽然我没有显示 bdata 缓冲区是预先分配的 2 兆字节。

任何能为我指明正确方向的想法都将不胜感激。

提前致谢。

最佳答案

rdbuf() 是一个流,您将其视为内存指针。

关于c++ - S3Client::GetObject with SetRange 返回错误数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369268/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com