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
Libérer: 2025-01-03 16:42:40
original
906 Les gens l'ont consulté

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;
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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();
Copier après la connexion

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);
Copier après la connexion

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;
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal