文字列のベクトルを 1 つの文字列に内包することは、プログラミングにおける一般的な操作です。さまざまな方法がありますが、この記事では、読みやすさと効率を最大化するための 2 つの洗練されたソリューションを検討します。
最初のアプローチでは、ユーザー定義関数を使用します。コード スニペットは次のとおりです。
static std::string& implode(const std::vector<:string>& elems, char delim, std::string& s) {
for (std::vector<:string>::const_iterator ii = elems.begin(); ii != elems.end(); ii) {
s = (*ii);
if (ii 1 != elems.end()) {
s = delim;
}
}
return s;
}
この関数は、文字列のベクトル、区切り文字、および文字列変数への参照を受け取ります。これはベクトルを反復処理し、各要素を文字列変数に追加し、必要に応じて区切り文字を追加します。
ただし、より洗練された解決策は、強力な Boost ライブラリを利用することです:
#include
...
std::string joinedString = boost::algorithm::join(elems, delim);
このアプローチでは、一連の文字列と区切り文字を引数として受け取る boost::algorithm::join 関数を利用します。単一の文字列を返します。
Boost を使用すると、ベクトル反復アプローチのパフォーマンス上の利点を確保しながら、簡潔さと読みやすさが向上します。さらに、Boost はさまざまなプラットフォームで広くサポートされているため、コードの移植性も向上します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3