「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 文字列のベクトルをエレガントに内部分解する方法?

文字列のベクトルをエレガントに内部分解する方法?

2024 年 11 月 8 日に公開
ブラウズ:148

How to Elegantly Implode a Vector of Strings?

文字列のベクトルを内包するためのエレガントなソリューション

文字列のベクトルを 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 はさまざまなプラットフォームで広くサポートされているため、コードの移植性も向上します。

リリースステートメント この記事は次の場所に転載されています: 1729728914 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3