インターフェイスでstring_viewを使用する必要があるのはいつですか?
私は模倣Aに設計された内部ライブラリを使用しているC ++ライブラリを提案し、いつか過去数年間で、私はそのインターフェースが使用してから変更を参照std::stringしますstring_view。 そこで、新しいインターフェースに適合するようにコードを忠実に変更しました。残念ながら、私が渡さなければならないのは、std :: stringパラメーターと、std :: string戻り値です。そのため、私のコードは次のように変更されました。 void one_time_setup(const std::string & p1, int p2) { api_class api; api.setup (p1, special_number_to_string(p2)); } に void one_time_setup(const std::string & p1, int p2) { api_class api; const std::string p2_storage(special_number_to_string(p2)); api.setup (string_view(&p1[0], p1.size()), string_view(&p2_storage[0], p2_storage.size())); } 私は、この変更がAPIクライアントとして私に何を買ったのか、実際には、コードを増やすこと以外は見当たらないでしょう(おそらく失敗するためです)。API呼び出しの安全性は低下し(APIがパラメーターのストレージを所有しなくなったため)、おそらくプログラム0の作業を節約しました(コンパイラーができる最適化の移動により)。起動後またはどこかで大きなループで行われない、または行われない割り当てがいくつかあります。このAPI用ではありません。 ただし、このアプローチは、他の場所で見られるアドバイス、たとえば次の回答に従うようです。 余談ですが、C ++ 17以降では、std :: string_viewを優先してconst std :: …