您的位置:首页 >C++ int转string方法及to_string使用详解
发布于2026-02-28 阅读(0)
扫一扫,手机访问
std::to_string是C++11起定义在<string>中的标准函数,支持基本数值类型转字符串,不抛异常、线程安全,但无格式控制、不支持指针或自定义类型。

只要编译器支持 C++11 或更高(g++ -std=c++11、MSVC 2013+、Clang 3.1+),std::to_string 就是开箱即用的,不需要额外链接或头文件——它定义在 <string> 中。
常见错误是忘了 #include <string>,或者误以为要 using namespace std; 才能用(其实加 std:: 前缀更安全)。
std::to_string(42) → "42"std::to_string(-7) → "-7"std::to_string(0) → "0"它接受的参数类型很有限:int、long、long long、unsigned 系列、float、double、long double。传 char 会转成 ASCII 数字(比如 std::to_string('a') 得到 "97"),不是你想要的字符本身。
const char*?直接构造 std::string s = "hello";std::vector<int>?得自己循环拼接,to_string 不处理容器nullptr 或未初始化变量?行为未定义,别这么干对浮点数,std::to_string(3.14159) 固定输出约 6 位有效数字(实际是按默认精度 + 尾随零截断),得不到 "3.14" 或科学计数法。这不是 bug,是设计使然——它只做“最简直译”,不负责格式化。
std::ostringstream 或 std::format(C++20)to_string 完全不支持sprintf 稍慢,但足够日常使用;极端情况才需考虑 itoa(非标准)或 std::to_chars(C++17,无内存分配)to_string 对 INT_MIN 这类极值能正确处理(比如 std::to_string(INT_MIN) 得到 "-2147483648"),但前提是传入的是对应类型的字面量或变量。如果发生隐式类型截断(比如把 long long 强转成 int 再传),结果就取决于截断后的值。
std::to_string((int)some_long_long_value),除非你明确知道不会溢出unsigned int 时不会带 + 号,std::to_string(0u) 就是 "0",不是 "+0"to_string 是纯函数,无全局状态,可并发调用真正容易被忽略的是:它不抛异常,也不返回错误码——输入合法类型就一定有字符串输出,哪怕数值极大(如 LLONG_MAX)也照转不误。这意味着你不能靠捕获异常来判断转换失败,得在调用前确保类型和值域合理。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9