

新闻资讯
技术学院std::to_string 是最直接安全的方式,C++11起标准库提供,类型安全、无需手动管理内存,支持所有有符号/无符号整型,但不支持自定义进制,旧编译器可能不可用。
std::to_string 是最直接安全的方式这是 C++11 起标准库提供的首选方法,无需手动管理内存,类型安全,且对 int、long、double 等内置数值类型都适用。
它内部处理了符号位、进制(固定为十进制)、溢出边界等细节,比手写 stringstream 更轻量。
int num = -42; std::string s = std::to_string(num); // 结果是 "-42"
unsigned int、long long
std::ostringstream 更灵活但稍重适合需要格式化控制的场景,比如补零、指定宽度、混入其他类型字符串等。本质是流式拼接,比 to_string 多一层对象构造开销。
int num = 7;
std::ostringstream oss;
oss << std::setw(3) << std::setfill('0') << num;
std::string s = oss.str(); // 结果是 "007"
#include 和
oss.str() 返回的是新字符串,不是引用,不用担心生命周期问题ostringstream 对象前,需调用 oss.str("") 清空内容,否则会追加itoa —— 它不是标准函数itoa 是某些 C 库(如 MSVC、glibc 扩展)提供的非标准函数,C++ 标准完全不保证其存在。跨平台项目中直接使用会导致编译失败。
-D_GNU_SOURCE 或类似宏(int, char*, int base),有些反着char buf[5] 存不下 INT_MIN)char*,不是 std::string,还得额外构造单纯转 int → std::string,std::to_string 在绝大多数场景下最快也最清晰。只有当你已经依赖流操作(比如日志拼接)、或需要运行时切换进制/精度时,才值得引入 ostringstream。
层”而用 sprintf + std::string(buf):不安全、不简洁、易出错std::to_string(INT_MAX) 和 std::to_string(INT_MIN) 都能正确工作,无需特殊处理真正容易被忽略的是:不同编译器对 std::to_string 的实现细节略有差异(比如负零、小数点后位数),但对整型输入完全一致。放心用。