This directory contains an idiomatic C++ client library for interacting with Google Cloud Storage (GCS), which is Google's Object Storage service. It allows world-wide storage and retrieval of any amount of data at any time. You can use Cloud Storage for a range of scenarios including serving website content, storing data for archival and disaster recovery, or distributing large data objects to users via direct download.
Please note that the Google Cloud C++ client libraries do not follow Semantic Versioning.
- Windows, macOS, Linux
- C++11 (and higher) compilers (we test with GCC >= 4.9, Clang >= 3.8, and MSVC >= 2019)
- Environments with or without exceptions
- Bazel and CMake builds
- Official documentation about Google Cloud Storage
- Reference doxygen documentation for each release of this client library
- Detailed header comments in our public
.hfiles
The quickstart/ directory contains a minimal environment to help you quickly get started using this client library. The following is the "Hello World" program you'll be running, which should give you a taste of this library.
#include "google/cloud/storage/client.h"
#include <iostream>
int main(int argc, char* argv[]) {
if (argc != 2) {
std::cerr << "Missing bucket name.\n";
std::cerr << "Usage: quickstart <bucket-name>\n";
return 1;
}
std::string const bucket_name = argv[1];
// Create aliases to make the code easier to read.
namespace gcs = google::cloud::storage;
// Create a client to communicate with Google Cloud Storage. This client
// uses the default configuration for authentication and project id.
google::cloud::StatusOr<gcs::Client> client =
gcs::Client::CreateDefaultClient();
if (!client) {
std::cerr << "Failed to create Storage Client, status=" << client.status()
<< "\n";
return 1;
}
auto writer = client->WriteObject(bucket_name, "quickstart.txt");
writer << "Hello World!";
writer.Close();
if (writer.metadata()) {
std::cout << "Successfully created object: " << *writer.metadata() << "\n";
} else {
std::cerr << "Error creating object: " << writer.metadata().status()
<< "\n";
return 1;
}
auto reader = client->ReadObject(bucket_name, "quickstart.txt");
std::string contents{std::istreambuf_iterator<char>{reader}, {}};
std::cout << contents << "\n";
return 0;
}See CONTRIBUTING.md for details on how to
contribute to this project, including how to build and test your changes
as well as how to properly format your code.
Apache 2.0; see LICENSE for details.