Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Menggabungkan std::string dan int dalam C ?

Bagaimana untuk Cekap Menggabungkan std::string dan int dalam C ?

Linda Hamilton
Linda Hamiltonasal
2025-01-03 16:42:40876semak imbas

How to Efficiently Concatenate a std::string and an int in C  ?

Menggabungkan std::string dan int

Menggabungkan std::string dan int untuk membentuk rentetan tunggal boleh menjadi tugas yang kelihatan mudah, namun ia mungkin memberikan beberapa cabaran. Mari kita atasi contoh yang diberikan:

std::string name = "John";
int age = 21;

Untuk menggabungkan elemen ini menjadi "John21," beberapa pendekatan tersedia.

Dengan Boost

Menggunakan Lexical_cast Boost, anda boleh menukar int kepada rentetan dan tambahkan ia:

#include <boost/lexical_cast.hpp>

std::string result = name + boost::lexical_cast<std::string>(age);

Dengan C 11

Dalam C 11, fungsi std::to_string menyediakan cara mudah untuk menukar int kepada rentetan:

std::string result = name + std::to_string(age);

Dengan FastFormat

FastFormat menawarkan kaedah Format dan Tulis untuk penggabungan rentetan:

#include <fastformat/format.hpp>
fastformat::fmt(result, "{0}{1}", name, age);
fastformat::write(result, name, age);

Dengan perpustakaan {fmt}

{ perpustakaan fmt} menyediakan sintaks ringkas untuk rentetan pemformatan:

#include <fmt/core.h>
std::string result = fmt::format("{}{}", name, age);

Dengan IOStreams

Menggunakan strim IO ialah pendekatan yang lebih verbose tetapi standard C:

#include <sstream>

std::stringstream sstm;
sstm << name << age;
std::string result = sstm.str();

Dengan itoa

Itoa (Integer-to-String) ialah sambungan bukan standard yang menukarkan int kepada rentetan:

#include <stdlib.h>
char numstr[21]; // Ensure sufficient buffer size
std::string result = name + itoa(age, numstr, 10);

Dengan sprintf

Sprintf ialah satu lagi sambungan bukan standard yang memformatkan int menjadi rentetan :

#include <cstdio>
char numstr[21]; // Ensure sufficient buffer size
sprintf(numstr, "%d", age);
std::string result = name + numstr;

Dengan STLSoft's integer_to_string

STLSoft menyediakan fungsi khusus untuk menukar int kepada rentetan:

#include <stlsoft/string_algo.h>
char numstr[21]; // Ensure sufficient buffer size
std::string result = name + stlsoft::integer_to_string(numstr, 21, age);

Dengan winstl::int_to_string STLSoft

#include <stlsoft/winstl/int_to_string.hpp>
std::string result = name + winstl::int_to_string(age);

Dengan Poco NumberFormatter

Poco's NumberFormatter boleh digunakan untuk memformat nombor sebagai rentetan:

#include <Poco/NumberFormatter.h>
std::string result = name + Poco::NumberFormatter().format(age);

Ringkasnya, pendekatan yang dipilih mungkin berbeza bergantung pada keperluan dan platform khusus anda. Pertimbangkan prestasi, keselamatan dan mudah alih apabila memilih penyelesaian yang paling sesuai untuk menggabungkan std::string dan int.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menggabungkan std::string dan int dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn