3 votes

Limiter la taille totale du résultat avec C++20 fmt

Je sais que je peux limiter la taille d'un argument de chaîne particulier, mais je ne sais pas comment le faire pour l'ensemble de la sortie. En d'autres termes, est-ce que este peut être écrit avec un seul appel au format ?

#include <string>
#include <iostream>
#include <fmt/format.h>

int LOG_MAX_MESSAGE_LENGTH = 11;

void f(const char* p) {
    std::cout << fmt::format("{:.{}}", fmt::format("ABI is {}", p),
                             LOG_MAX_MESSAGE_LENGTH)
              << std::endl;
}

int main() {
    f("hellooooo");
}

4voto

Barry Points 45207

Il y a aussi format_to_n qui prend un itérateur de sortie et une taille (et ensuite la chaîne de format habituelle et les arguments).

format_to_n(
    std::ostream_iterator(std::cout), LOG_MAX_MESSAGE_LENGTH,
    "ABI is {}", p);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X