连接 std::string 和 int
组合 std::string 和 int 形成单个字符串可以是看似简单的任务,但可能会带来一些挑战。让我们来处理给定的示例:
std::string name = "John"; int age = 21;
要将这些元素连接到“John21”,可以使用多种方法。
使用 Boost
使用Boost的lexical_cast,可以将int转换为字符串并追加它:
#include <boost/lexical_cast.hpp> std::string result = name + boost::lexical_cast<std::string>(age);
使用 C 11
在 C 11 中,std::to_string 函数提供了一种将 int 转换为字符串的便捷方法:
std::string result = name + std::to_string(age);
与FastFormat
FastFormat 提供用于字符串连接的 Format 和 Write 方法:
#include <fastformat/format.hpp> fastformat::fmt(result, "{0}{1}", name, age); fastformat::write(result, name, age);
使用 {fmt} 库
{ fmt} 库为字符串提供了简洁的语法格式化:
#include <fmt/core.h> std::string result = fmt::format("{}{}", name, age);
使用 IOStreams
使用 IO 流是一种更详细但标准的 C 方法:
#include <sstream> std::stringstream sstm; sstm << name << age; std::string result = sstm.str();
与 itoa
Itoa (Integer-to-String) 是一个将 int 转换为字符串的非标准扩展:
#include <stdlib.h> char numstr[21]; // Ensure sufficient buffer size std::string result = name + itoa(age, numstr, 10);
与 sprintf
Sprintf 是另一个非标准将 int 格式化为字符串的扩展:
#include <cstdio> char numstr[21]; // Ensure sufficient buffer size sprintf(numstr, "%d", age); std::string result = name + numstr;
With STLSoft的integer_to_string
STLSoft提供了一个专门的函数将int转换为字符串:
#include <stlsoft/string_algo.h> char numstr[21]; // Ensure sufficient buffer size std::string result = name + stlsoft::integer_to_string(numstr, 21, age);
与STLSoft的winstl::int_to_string
此功能针对Windows,提供高效、安全的转换:
#include <stlsoft/winstl/int_to_string.hpp> std::string result = name + winstl::int_to_string(age);
用 Poco NumberFormatter
Poco 的 NumberFormatter 可以用来将数字格式化为字符串:
#include <Poco/NumberFormatter.h> std::string result = name + Poco::NumberFormatter().format(age);
综上所述,选择的方法可能会根据您的具体要求和平台而有所不同。在选择最合适的连接 std::string 和 int 的解决方案时,请考虑性能、安全性和可移植性。
以上是如何在 C 中有效连接 std::string 和 int ?的详细内容。更多信息请关注PHP中文网其他相关文章!