整型、浮点型转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;
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;