5

整数を既知の文字列に連結しようとしていますが、それを行うにはいくつかの方法があることがわかりました。そのうちの 2 つは次のとおりです。

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);

変換タイプ ( to ) を既に知っているので、 を使用するboost::lexical_cast方が効率的ですか? それとも、外部ライブラリに依存する必要なく、同じように効果的ですか?intstringstatic_cast

4

1 に答える 1

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

これは見苦しく、読みにくいです。これに加えて、lexical_cast がこれをほぼ正確に実行するという事実を考慮すると、lexical_cast を使用する方が「優れている」と断言できます。

ただし、C++11 にはto_stringオーバーロードがあります。

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

コンパイラがサポートしている場合、これが最適なオプションです。

C++ で数値を文字列に、またはその逆に変換する方法も参照してください。

于 2013-07-22T15:14:28.790 に答える