Maison >développement back-end >C++ >Comment concaténer efficacement un std::string et un int en C ?

Comment concaténer efficacement un std::string et un int en C ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-03 16:42:40876parcourir

How to Efficiently Concatenate a std::string and an int in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn