Maison >développement back-end >C++ >Comment concaténer efficacement un std::string et un int en C ?
Concaténer un std::string et un int
Combiner un std::string et un int pour former une seule chaîne peut être un une tâche apparemment simple, mais qui peut présenter certains défis. Abordons l'exemple donné :
std::string name = "John"; int age = 21;
Pour concaténer ces éléments dans "John21", plusieurs approches sont disponibles.
Avec Boost
Utiliser lexical_cast de Boost, vous pouvez convertir l'int en chaîne et ajouter it :
#include <boost/lexical_cast.hpp> std::string result = name + boost::lexical_cast<std::string>(age);
Avec C 11
En C 11, la fonction std::to_string fournit un moyen pratique de convertir un int en chaîne :
std::string result = name + std::to_string(age);
Avec FastFormat
Offres FastFormat les méthodes Format et Write pour la concaténation de chaînes :
#include <fastformat/format.hpp> fastformat::fmt(result, "{0}{1}", name, age); fastformat::write(result, name, age);
Avec la bibliothèque {fmt}
La bibliothèque {fmt} fournit une syntaxe concise pour le formatage des chaînes :
#include <fmt/core.h> std::string result = fmt::format("{}{}", name, age);
Avec IOStreams
L'utilisation d'un flux IO est une approche C plus verbeuse mais standard :
#include <sstream> std::stringstream sstm; sstm << name << age; std::string result = sstm.str();
Avec itoa
Itoa (Integer- to-String) est une extension non standard qui convertit un int en un string :
#include <stdlib.h> char numstr[21]; // Ensure sufficient buffer size std::string result = name + itoa(age, numstr, 10);
Avec sprintf
Sprintf est une autre extension non standard qui formate un int en chaîne :
#include <cstdio> char numstr[21]; // Ensure sufficient buffer size sprintf(numstr, "%d", age); std::string result = name + numstr;
Avec integer_to_string
STLSoft fournit une fonction spécialisée pour convertir un int en chaîne :
#include <stlsoft/string_algo.h> char numstr[21]; // Ensure sufficient buffer size std::string result = name + stlsoft::integer_to_string(numstr, 21, age);
Avec winstl::int_to_string de STLSoft
Cette fonction, spécifique à Windows, permet une conversion efficace et sûre :
#include <stlsoft/winstl/int_to_string.hpp> std::string result = name + winstl::int_to_string(age);
Avec Poco NumberFormatter
NumberFormatter de Poco peut être utilisé pour formater des nombres sous forme de chaînes :
#include <Poco/NumberFormatter.h> std::string result = name + Poco::NumberFormatter().format(age);
En résumé, l'approche choisie peut varier en fonction de vos besoins spécifiques et de votre plate-forme. Tenez compte des performances, de la sécurité et de la portabilité lors de la sélection de la solution la plus appropriée pour concaténer un std::string et un int.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!