C++:
Interpolation de chaînes de caractères
Comment faire :
#include <iostream>
#include <string>
#include <fmt/core.h> // C++20 <format> library
int main() {
int age = 25;
std::string prenom = "Alex";
// Utilisation de fmt::format pour l'interpolation
std::string message = fmt::format("Bonjour, je suis {} et j'ai {} ans.", prenom, age);
std::cout << message << std::endl; // Affiche: Bonjour, je suis Alex et j'ai 25 ans.
return 0;
}
Exploration approfondie
Historiquement, en C++, l’interpolation était souvent réalisée par des flux d’entrée/sortie (iostream) ou des opérations de concaténation manuelles. Avec l’introduction de la bibliothèque <format>
dans C++20, inspirée de la bibliothèque populaire fmt
, les développeurs ont désormais accès à un mécanisme d’interpolation de chaîne élégant et performant qui évite les conversions de types inutiles et les erreurs courantes que l’on retrouve avec les méthodes plus anciennes.
Alternativement, avant C++20, on utilisait sprintf
ou la surcharge des opérateurs de flux, mais ces méthodes pouvaient entraîner des problèmes de sécurité et de performance. L’interpolation avec fmt::format
offre une solution type-safe, ce qui signifie moins d’erreurs de types de données lors de l’exécution.
Concernant l’implémentation, fmt::format
utilise des jetons d’interpolation {}
dans lesquels les variables et expressions sont insérées. Cela se fait en analysant la chaîne formatée et en remplaçant ces jetons par la représentation chaîne des arguments correspondants.
Voir également
- La documentation de fmtlib: https://fmt.dev/latest/index.html
- C++ reference sur
<format>
: https://en.cppreference.com/w/cpp/header/format - L’article de Herb Sutter sur l’introduction de
<format>
dans C++20: https://herbsutter.com/2019/09/23/trip-report-summer-iso-c-standards-meeting-cologne/