std::to_string

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
成员函数
元素访问
迭代器
容量
操作
搜索
常量
推导指引 (C++17)
非成员函数
I/O
比较
(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20)
数值转换
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
to_string
(C++11)
(C++11)
辅助类
 
定义于头文件 <string>
std::string to_string( int value );
(1) (C++11 起)
std::string to_string( long value );
(2) (C++11 起)
std::string to_string( long long value );
(3) (C++11 起)
std::string to_string( unsigned value );
(4) (C++11 起)
std::string to_string( unsigned long value );
(5) (C++11 起)
std::string to_string( unsigned long long value );
(6) (C++11 起)
std::string to_string( float value );
(7) (C++11 起)
std::string to_string( double value );
(8) (C++11 起)
std::string to_string( long double value );
(9) (C++11 起)
1) 把有符号十进制整数转换为字符串,与 std::sprintf(buf, "%d", value) 在有足够大的 buf 时产生的内容相同。
2) 把有符号十进制整数转换为字符串,与 std::sprintf(buf, "%ld", value) 在有足够大的 buf 时产生的内容相同。
3) 把有符号十进制整数转换为字符串,与 std::sprintf(buf, "%lld", value) 在有足够大的 buf 时产生的内容相同。
4) 把无符号十进制整数转换为字符串,与 std::sprintf(buf, "%u", value) 在有足够大的 buf 时产生的内容相同。
5) 把无符号十进制整数转换为字符串,与 std::sprintf(buf, "%lu", value) 在有足够大的 buf 时产生的内容相同。
6) 把无符号十进制整数转换为字符串,与 std::sprintf(buf, "%llu", value) 在有足够大的 buf 时产生的内容相同。
7,8) 把浮点值转换为字符串,与 std::sprintf(buf, "%f", value) 在有足够大的 buf 时产生的内容相同。
9) 把浮点值转换为字符串,与 std::sprintf(buf, "%Lf", value) 在有足够大的 buf 时产生的内容相同。

参数

value - 需要转换的数值

返回值

一个包含转换后值的字符串

异常

可能从 std::string 的构造函数抛出 std::bad_alloc

注意

  • 对于浮点类型, std::to_string 可能产生不期待的结果,因为返回的字符串中的有效位数能为零,见示例。
  • 返回值可以明显地有别于 std::cout 所默认打印的结果,见示例。
  • std::to_string 由于格式化目的依赖本地环境,从而从多个线程同时调用 std::to_string 可能会导致调用的部分序列化结果。 C++17 提供高性能、不依赖本地环境的替用品 std::to_chars

示例

#include <iostream>
#include <string>
 
int main() 
{
    double f = 23.43;
    double f2 = 1e-9;
    double f3 = 1e40;
    double f4 = 1e-40;
    double f5 = 123456789;
    std::string f_str = std::to_string(f);
    std::string f_str2 = std::to_string(f2); // 注意:返回 "0.000000"
    std::string f_str3 = std::to_string(f3); // 注意:不返回 "1e+40".
    std::string f_str4 = std::to_string(f4); // 注意:返回 "0.000000"
    std::string f_str5 = std::to_string(f5);
    std::cout << "std::cout: " << f << '\n'
              << "to_string: " << f_str  << "\n\n"
              << "std::cout: " << f2 << '\n'
              << "to_string: " << f_str2 << "\n\n"
              << "std::cout: " << f3 << '\n'
              << "to_string: " << f_str3 << "\n\n"
              << "std::cout: " << f4 << '\n'
              << "to_string: " << f_str4 << "\n\n"
              << "std::cout: " << f5 << '\n'
              << "to_string: " << f_str5 << '\n';
}

输出:

std::cout: 23.43
to_string: 23.430000
 
std::cout: 1e-09
to_string: 0.000000
 
std::cout: 1e+40
to_string: 10000000000000000303786028427003666890752.000000
 
std::cout: 1e-40
to_string: 0.000000
 
std::cout: 1.23457e+08
to_string: 123456789.000000

参阅

转换整数或浮点值为 wstring
(函数)
(C++11)(C++11)
转换字符串为无符号整数
(函数)
(C++11)(C++11)(C++11)
转换字符串为有符号整数
(函数)
(C++11)(C++11)(C++11)
转换字符串为浮点值
(函数)
(C++17)
转换整数或浮点值到字符序列
(函数)