title: How to compress a C++ string using Zstd?
body: <p>I'm very new to C++ and I wanted to compress a <code>std:string</code> object via <code>Zstd</code> compression library, but so far I couldn't find a C++ sample code for this purpose by googling it. I've found example C code but it seems that they are working with C style character arrays instead of a <code>std:string</code> object.</p>
  
  <p>Example C code:
     <a href="https://github.com/facebook/zstd/blob/dev/examples/simple_compression.c" rel="nofollow noreferrer">https://github.com/facebook/zstd/blob/dev/examples/simple_compression.c</a></p>
  
  <pre><code>/*
   * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under both the BSD-style license (found in the
   * LICENSE file in the root directory of this source tree) and the GPLv2 (found
   * in the COPYING file in the root directory of this source tree).
   * You may select, at your option, one of the above-listed licenses.
   */
  
  #include &lt;stdio.h&gt;     // printf
  #include &lt;stdlib.h&gt;    // free
  #include &lt;string.h&gt;    // strlen, strcat, memset
  #include &lt;zstd.h&gt;      // presumes zstd library is installed
  #include "common.h"    // Helper functions, CHECK(), and CHECK_ZSTD()
  
  static void compress_orDie(const char* fname, const char* oname)
  {
      size_t fSize;
      void* const fBuff = mallocAndLoadFile_orDie(fname, &amp;fSize);
      size_t const cBuffSize = ZSTD_compressBound(fSize);
      void* const cBuff = malloc_orDie(cBuffSize);
  
      /* Compress.
       * If you are doing many compressions, you may want to reuse the context.
       * See the multiple_simple_compression.c example.
       */
      size_t const cSize = ZSTD_compress(cBuff, cBuffSize, fBuff, fSize, 1);
      CHECK_ZSTD(cSize);
  
      saveFile_orDie(oname, cBuff, cSize);
  
      /* success */
      printf("%25s : %6u -&gt; %7u - %s \n", fname, (unsigned)fSize, (unsigned)cSize, oname);
  
      free(fBuff);
      free(cBuff);
  }
  
  static char* createOutFilename_orDie(const char* filename)
  {
      size_t const inL = strlen(filename);
      size_t const outL = inL + 5;
      void* const outSpace = malloc_orDie(outL);
      memset(outSpace, 0, outL);
      strcat(outSpace, filename);
      strcat(outSpace, ".zst");
      return (char*)outSpace;
  }
  
  int main(int argc, const char** argv)
  {
      const char* const exeName = argv[0];
  
      if (argc!=2) {
          printf("wrong arguments\n");
          printf("usage:\n");
          printf("%s FILE\n", exeName);
          return 1;
      }
  
      const char* const inFilename = argv[1];
  
      char* const outFilename = createOutFilename_orDie(inFilename);
      compress_orDie(inFilename, outFilename);
      free(outFilename);
      return 0;
  }
  </code></pre>
  
  <p>My question is if anyone could direct me to a sample code/snippet showing how to compress a C++ string using Zstd?</p>