贝利信息

c++中如何将int转换为string_c++整型转字符串方法

日期:2026-01-05 00:00 / 作者:穿越時空
std::to_string 是最直接安全的方式,C++11起标准库提供,类型安全、无需手动管理内存,支持所有有符号/无符号整型,但不支持自定义进制,旧编译器可能不可用。

std::to_string 是最直接安全的方式

这是 C++11 起标准库提供的首选方法,无需手动管理内存,类型安全,且对 intlongdouble 等内置数值类型都适用。

它内部处理了符号位、进制(固定为十进制)、溢出边界等细节,比手写 stringstream 更轻量。

int num = -42;
std::string s = std::to_string(num); // 结果是 "-42"

std::ostringstream 更灵活但稍重

适合需要格式化控制的场景,比如补零、指定宽度、混入其他类型字符串等。本质是流式拼接,比 to_string 多一层对象构造开销。

int num = 7;
std::ostringstream oss;
oss << std::setw(3) << std::setfill('0') << num;
std::string s = oss.str(); // 结果是 "007"

避免用 itoa —— 它不是标准函数

itoa 是某些 C 库(如 MSVC、glibc 扩展)提供的非标准函数,C++ 标准完全不保证其存在。跨平台项目中直接使用会导致编译失败。

性能与可读性权衡要点

单纯转 intstd::stringstd::to_string 在绝大多数场景下最快也最清晰。只有当你已经依赖流操作(比如日志拼接)、或需要运行时切换进制/精度时,才值得引入 ostringstream

真正容易被忽略的是:不同编译器对 std::to_string 的实现细节略有差异(比如负零、小数点后位数),但对整型输入完全一致。放心用。