static_cast vs boost :: lexical_cast

joa*_*dre 4 c++ string boost casting

我试图将一个整数连接到一个已知的字符串,我发现有几种方法可以做到这一点,其中两个是:

int num=13;
string str = "Text" + static_cast<ostringstream*>( &(ostringstream() << num) )->str();
Run Code Online (Sandbox Code Playgroud)

或者我也可以使用boost库' lexical_cast:

int num=13;
string str= "Text" + boost::lexical_cast<std::string>(num);
Run Code Online (Sandbox Code Playgroud)

是否boost::lexical_cast以任何方式使用更高效,因为我已经知道转换类型(intto string)?或者static_cast同样有效,而不必依赖外部库?

Arm*_*yan 6

string str = "Text" + static_cast<ostringstream*>( &(ostringstream() << num) )->str();
Run Code Online (Sandbox Code Playgroud)

这很丑陋,不易阅读.除此之外,lexical_cast几乎就是这样,我们可以肯定地说使用lexical_cast是"更好".

但是,在C++ 11中,我们有to_string重载.

string str = "Text" + to_string(num);
Run Code Online (Sandbox Code Playgroud)

如果您的编译器支持,哪个是最佳选项.

另请参见如何在C++中将数字转换为字符串,反之亦然