Cuál es el idioma de C ++ para reemplazar snprintf (3)?

Tengo un código C ++ que necesita generar un mensaje de error cuando falla el análisis de un encabezado de archivo determinado. En este caso, necesito asegurarme de que un determinado campo de 4 bytes en el encabezado sea "OggS", y si no lo es, devolverá un mensaje de error como "inválido capture_pattern: 'FooB'; esperando 'OggS'". Mi código se parece a esto:

const string OggPage::parseHeader(void) {
  read(fd, capture_pattern, sizeof(capture_pattern)); // error handling omitted
  if (strncmp(capture_pattern, CAPTURE_PATTERN, sizeof(capture_pattern)) != 0) {
    char err[256];
    snprintf(err, sizeof(err), "Failed to read %d bytes from file descriptor %d: %s\n", sizeof(capture_pattern), fd, err);
    return err;
  }

  return "Everything was A-OK!";
}

¿Cuál es el idioma estándar de C ++ para construir una cadena a partir de otros tipos de datos? No estoy casado con laprintf(3)ormato @ -style aquí, así que siéntete libre de sugerir cualquier cosa que funcione.

Respuestas a la pregunta(5)

Su respuesta a la pregunta