#include "TosClientV2.h"
using namespace VolcengineTos;
std::string region = "Your Region";
std::string accessKey = std::getenv("TOS_ACCESS_KEY");
std::string secretKey = std::getenv("TOS_SECRET_KEY");
std::string bucketName = "examplebucket";
std::string prefix = "yourkeyPrefix";
TosClientV2 client(region, accessKey, secretKey);
ListObjectVersionsV2Input input(bucketName);
bool isTruncated = true;
std::string nextKeyMarker = "";
DeleteObjectInput deleteObjectInput;
deleteObjectInput.setBucket(bucketName);
input.setKeyMarker(nextKeyMarker);
auto output = client.listObjectVersions(input);
if (!output.isSuccess()) {
std::cout << "ListObjects failed." << output.error().String() << std::endl;
nextKeyMarker = output.result().getNextKeyMarker();
isTruncated = output.result().isTruncated();
for (const auto& versions : output.result().getVersions()) {
deleteObjectInput.setKey(versions.getKey());
deleteObjectInput.setVersionID(versions.getVersionId());
auto deleteOutput = client.deleteObject(deleteObjectInput);
if (!deleteOutput.isSuccess()){
if(output.error().getStatusCode() != 404 && output.error().getCode() != "NoSuchKey"){
std::cout << "DeleteObject failed:" << deleteOutput.error().String() << std::endl;
for (const auto& deleteMarker : output.result().getDeleteMarkers()) {
deleteObjectInput.setKey(deleteMarker.getKey());
deleteObjectInput.setVersionID(deleteMarker.getVersionId());
auto deleteOutput = client.deleteObject(deleteObjectInput);
if (!deleteOutput.isSuccess()){
if(output.error().getStatusCode() != 404 && output.error().getCode() != "NoSuchKey"){
std::cout << "DeleteObject failed:" << deleteOutput.error().String() << std::endl;