c++11 标准模板(STL)string(十六)

整型、浮点型转string

转换整数或浮点值为 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 。

调用示例

    // 转换整数或浮点值为 string
    int numi_max = INT_MAX;
    int numi_min = INT_MIN;
    std::cout << "max int to_string: "
              << std::to_string(numi_max) << std::endl;
    std::cout << "min int to_string: "
              << std::to_string(numi_min) << std::endl;

    long numl_max = LONG_MAX;
    long numl_min = LONG_MIN;
    std::cout << "max long to_string: "
              << std::to_string(numl_max) << std::endl;
    std::cout << "min long to_string: "
              << std::to_string(numl_min) << std::endl;

    long long numll_max = LONG_LONG_MAX;
    long long numll_min = LONG_LONG_MIN;
    std::cout << "max long long to_string: "
              << std::to_string(numll_max) << std::endl;
    std::cout << "min long long to_string: "
              << std::to_string(numll_min) << std::endl;

    unsigned int numui_max = UINT_MAX;
    std::cout << "max unsigned int to_string: "
              << std::to_string(numui_max) << std::endl;

    unsigned long numul_max = ULONG_MAX;
    std::cout << "max unsigned long to_string: "
              << std::to_string(numul_max) << std::endl;

    unsigned long long numull_min = LONG_LONG_MIN;
    std::cout << "max unsigned long long to_string: "
              << std::to_string(numull_min) << std::endl;

    float numf = 3.1415926;
    std::cout << "float to_string: "
              << std::to_string(numf) << std::endl;

    double numd = 3.1415926e+40;
    std::cout << "double to_string: "
              << std::to_string(numd) << std::endl;

    long double numld = 3.1415926e+40;
    std::cout << "long double to_string: "
              << std::to_string(numld) << std::endl;

转换整数或浮点值为 wstring

std::to_wstring
std::wstring to_wstring( int value );                         (1) (C++11 起) 

std::wstring to_wstring( long value );                        (2) (C++11 起) 

std::wstring to_wstring( long long value );                   (3) (C++11 起) 

std::wstring to_wstring( unsigned value );                    (4) (C++11 起) 

std::wstring to_wstring( unsigned long value );               (5) (C++11 起) 

std::wstring to_wstring( unsigned long long value );          (6) (C++11 起) 

std::wstring to_wstring( float value );                       (7) (C++11 起) 

std::wstring to_wstring( double value );                      (8) (C++11 起) 

std::wstring to_wstring( long double value );                 (9) (C++11 起) 

转换数值为 std::wstring 。

1) 转换有符号十进制整数为宽字符串,其内容与 std::swprintf(buf, sz, L"%d", value) 对于充分大的 buf 将会生成的内容相同。

2) 转换有符号十进制整数为宽字符串,其内容与 std::swprintf(buf, sz, L"%ld", value) 对于充分大的 buf 将会生成的内容相同。

3) 转换有符号十进制整数为宽字符串,其内容与 std::swprintf(buf, sz, L"%lld", value) 对于充分大的 buf 将会生成的内容相同。

4) 转换无符号十进制整数为宽字符串,其内容与 std::swprintf(buf, sz, L"%u", value) 对于充分大的 buf 将会生成的内容相同。

5) 转换无符号十进制整数为宽字符串,其内容与 std::swprintf(buf, sz, L"%lu", value) 对于充分大的 buf 将会生成的内容相同。

6) 转换无符号十进制整数为宽字符串,其内容与 std::swprintf(buf, sz, L"%llu", value) 对于充分大的 buf 将会生成的内容相同。

7,8) 转换浮点值为宽字符串,其内容与 std::swprintf(buf, sz, L"%f", value) 对于充分大的 buf 将会生成的内容相同。

9) 转换浮点值为宽字符串,其内容与 std::swprintf(buf, sz, L"%Lf", value) 对于充分大的 buf 将会生成的内容相同。

参数

value-要转换的数值

返回值

保有转换后值的宽字符串

异常

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

调用示例

    // 转换整数或浮点值为 wstring
    int numi_max = INT_MAX;
    int numi_min = INT_MIN;
    std::wcout << "max int to_wstring: "
               << std::to_wstring(numi_max) << std::endl;
    std::wcout << "min int to_wstring: "
               << std::to_wstring(numi_min) << std::endl;

    long numl_max = LONG_MAX;
    long numl_min = LONG_MIN;
    std::wcout << "max long to_wstring: "
               << std::to_wstring(numl_max) << std::endl;
    std::wcout << "min long to_wstring: "
               << std::to_wstring(numl_min) << std::endl;

    long long numll_max = LONG_LONG_MAX;
    long long numll_min = LONG_LONG_MIN;
    std::wcout << "max long long to_wstring: "
               << std::to_wstring(numll_max) << std::endl;
    std::wcout << "min long long to_wstring: "
               << std::to_wstring(numll_min) << std::endl;

    unsigned int numui_max = UINT_MAX;
    std::wcout << "max unsigned int to_wstring: "
               << std::to_wstring(numui_max) << std::endl;

    unsigned long numul_max = ULONG_MAX;
    std::wcout << "max unsigned long to_wstring: "
               << std::to_wstring(numul_max) << std::endl;

    unsigned long long numull_min = LONG_LONG_MIN;
    std::wcout << "max unsigned long long to_wstring: "
               << std::to_wstring(numull_min) << std::endl;

    float numf = 3.1415926;
    std::wcout << "float to_wstring: "
               << std::to_wstring(numf) << std::endl;

    double numd = 3.1415926e+40;
    std::wcout << "double to_wstring: "
               << std::to_wstring(numd) << std::endl;

    long double numld = 3.1415926e+40;
    std::wcout << "long double to_wstring: "
               << std::to_wstring(numld) << std::endl;

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值