1. 概念
std::to_string是c++11之后提供的转字符串函数,定义在头文件中。
2. 类型
std::string to_string( int value ); //与 std::sprintf(buf, "%d", value)在有足够大的 buf 时产生的内容相同
std::string to_string( long value ); //与 std::sprintf(buf, "%ld", value)在有足够大的 buf 时产生的内容相同
std::string to_string( long long value ); //与 std::sprintf(buf, "%lld", value)在有足够大的 buf 时产生的内容相同
std::string to_string( unsigned value ); //与 std::sprintf(buf, "%u", value)在有足够大的 buf 时产生的内容相同
std::string to_string( unsigned long value ); //与 std::sprintf(buf, "%lu", value)在有足够大的 buf 时产生的内容相同
std::string to_string( unsigned long long value ); //与 std::sprintf(buf, "%llu", value) 在有足够大的 buf 时产生的内容相同
std::string to_string( float value ); //std::sprintf(buf, "%f", value) 在有足够大的 buf 时产生的内容相同
std::string to_string( double value ); //std::sprintf(buf, "%Lf", value) 在有足够大的 buf 时产生的内容相同
std::string to_string( long double value );
注意:
std::to_string
由于格式化目的依赖本地环境,从而当多个线程同时调用 std::to_string
时可能会导致调用的部分序列化结果。 C++17 提供高性能、不依赖本地环境的替代者 std::to_chars。
3. 示例
#include <string>
#include <iostream>
using namespace std;
int main()
{
int i = 10;
std::string s = std::to_string(i);
cout<< s <<endl; //10
float f = 1.1;
std::string s1 = std::to_string(f);
cout<< s1 <<endl; //1.100000
double d = 12.23;
std::string s2 = std::to_string(d);
cout<< s2 <<endl; //12.230000
return 0;
}