最推荐使用std::to_string,简洁安全;1. std::to_string适用于C++11及以上,直接转换整数;2. stringstream兼容旧标准,灵活性高;3. sprintf需注意缓冲区,不推荐新手;4. std::format为未来趋势,功能强大。

在C++中,将int转换为string有多种方法,下面介绍几种常用且实用的方式,适合不同场景使用。
1. 使用 std::to_string(最简单)
std::to_string 是C++11引入的函数,可以直接将整数转换为字符串,使用非常方便。
- 适用于基本类型:int、long、float、double等
- 语法简洁,推荐日常使用
示例代码:
#include#include int main() { int num = 123; std::string str = std::to_string(num); std::cout << "字符串是: " << str << std::endl; return 0; }
2. 使用 stringstream(传统方式)
利用std::stringstream可以将整数“写入”流中,再提取为字符串。这种方法兼容老标准,适合不支持C++11的环境。
立即学习“C++免费学习笔记(深入)”;
- 需要包含
头文件 - 灵活性高,可处理复杂格式
示例代码:
#include#include #include int main() { int num = 456; std::stringstream ss; ss << num; std::string str = ss.str(); std::cout << "转换结果: " << str << std::endl; return 0; }
3. 使用 C 风格 + std::string 构造(较少用)
通过sprintf将整数写入字符数组,再构造为std::string。这种方式更底层,需注意缓冲区大小。
- 需要包含
- 容易出错,不推荐新手使用
示例代码:
#include#include #include int main() { int num = 789; char buffer[20]; sprintf(buffer, "%d", num); std::string str(buffer); std::cout << "结果: " << str << std::endl; return 0; }
4. C++17 及以上:std::format(未来趋势)
C++20正式引入std::format,部分编译器在C++17模式下也支持。功能强大,类似Python的format。
示例(需编译器支持):
#include#include #include int main() { int num = 100; std::string str = std::format("{}", num); std::cout << str << std::endl; return 0; }
基本上就这些常用方法。日常开发中推荐优先使用std::to_string,简单安全。遇到格式化需求时,再考虑stringstream或std::format。不复杂但容易忽略的是头文件和编译标准的选择。











