static_cast vs boost :: lexical_cast

时间:2013-07-22 15:03:38

标签: c++ string boost casting

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

int num=13;
string str = "Text" + static_cast<ostringstream*>( &(ostringstream() << num) )->str();

或者我也可以使用boost图书馆'lexical_cast

int num=13;
string str= "Text" + boost::lexical_cast<std::string>(num);

使用boost::lexical_cast是否更有效率,因为我已经知道转换类型(intstring)?或者static_cast是否同样有效,而不必依赖外部库?

1 个答案:

答案 0 :(得分:5)

string str = "Text" + static_cast<ostringstream*>( &(ostringstream() << num) )->str();

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

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

string str = "Text" + to_string(num);

如果您的编译器支持,那么这是最佳选择。

另见How to convert a number to string and vice versa in C++