C++如何将数字转换为字符串?(to_string用法)

c++kquote>to_string是C++11起最简单安全的数字转字符串方法,支持整型和浮点型,但浮点精度默认且不可控;需格式化时应选ostringstream或C++20的format

在C++11及以后标准中,to_string 是最简单、最安全的将数字转为字符串的方法,支持整型、浮点型等基本数值类型。

to_string 基本用法

它定义在 头文件中,无需手动管理内存或格式化,直接传入数字即可返回 std::string

  • std::to_string(42)"42"
  • std::to_string(-17)"-17"
  • std::to_string(3.14159)"3.14159"(注意:精度由系统决定,不保证保留小数位数)

支持的参数类型

to_string 重载了常见数值类型,包括:

  • intlonglong long
  • unsigned 及其变体(如 unsigned intunsigned long long
  • floatdoublelong double

不支持自定义类型或指针;若传入 char,会转成对应 ASCII 数值的字符串(如 to_string('A') 得到 "65"),不是字符本身。

浮点数精度问题与替代方案

to_string 对浮点数仅按默认精度转换(通常 6 位有效数字),无法控制小数位数或格式(如固定两位小数)。需要精确格式化时,推荐:

  • std::ostringstream:灵活控制格式(如 std::fixedstd::setprecision
  • std::format(C++20):更现代、简洁,例如 std::format("{:.2f}", 3.14159)"3.14"

注意事项

  • 必须包含 #include
  • 编译器需开启 C++11 或更高标准(如 g++ -std=c++11)
  • 对极大整数或极高精度浮点数,要注意目标类型的表示范围和舍入行为

基本上就这些。日常整数转字符串,to_string 足够好用;有格式需求,再考虑流或 std::format