在C++中将数字转换为字符串的最佳方法?

Lyn*_*Dev 4 c++ string casting numbers c++11

来自C#背景,C#我可以这样写:

int int1       = 0;
double double1 = 0;
float float1   = 0;

string str = "words" + int1 + double1 + float1;
Run Code Online (Sandbox Code Playgroud)

..和字符串的转换是隐含的.在C++我理解的情况下,演员必须是明确的,我想知道问题通常是由C++程序员解决的?

我已经知道网上有很多信息,但似乎有很多方法可以做到,我想知道是否没有标准的做法?

如果你要编写上面的代码C++,你会怎么做?

Lig*_*ica 7

C++中的字符串只是字节的容器,所以我们必须依靠额外的功能来为我们做这件事.

在C++ 03的旧时代,我们通常使用I/O流的内置词法转换工具(通过格式化输入):

int    int1    = 0;
double double1 = 0;
float  float1  = 0;

std::stringstream ss;
ss << "words" << int1 << double1 << float1;

std::string str = ss.str();
Run Code Online (Sandbox Code Playgroud)

您可以使用各种I/O操纵器来微调结果,就像在sprintf格式字符串中一样(它仍然有效,并且仍然可以在某些C++代码中看到).

还有其他方法,它们自己转换每个参数然后依赖于连接所有结果字符串.boost::lexical_cast提供这个,就像C++ 11一样to_string:

int    int1    = 0;
double double1 = 0;
float  float1  = 0;

std::string str = "words"
   + std::to_string(int1) 
   + std::to_string(double1) 
   + std::to_string(float1);
Run Code Online (Sandbox Code Playgroud)

后一种方法不给你过任何控制如何,数据表示,尽管(演示).