ホームページ >バックエンド開発 >C++ >C 文字列の部分文字列を効率的に置換するにはどうすればよいですか?

C 文字列の部分文字列を効率的に置換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-22 05:02:13396ブラウズ

How to Efficiently Replace Substrings in C   Strings?

文字列の一部を別の文字列に置き換える

文字列内の部分文字列を置き換えるのはプログラミングにおける一般的なタスクであり、C にはいくつかの方法が用意されていますそれをするために。 1 つの方法は、標準 C ライブラリ関数の検索と置換を使用することです。

検索と置換の使用

検索関数は引数として文字列と部分文字列を受け取ります。文字列内の部分文字列の位置を返します。部分文字列が見つからない場合、find は string::npos を返します。部分文字列を別の部分文字列に置き換えるには、replace 関数を使用できます。 replace 関数は、文字列、置換される部分文字列、およびそれを置換する新しい部分文字列を受け取ります。次に例を示します。

bool replace(std::string& str, const std::string& from, const std::string& to) {
    size_t start_pos = str.find(from);
    if(start_pos == std::string::npos)
        return false;
    str.replace(start_pos, from.length(), to);
    return true;
}

std::string string("hello $name");
replace(string, "$name", "Somename");

replaceAll の使用

ある部分文字列のすべての出現を別の部分文字列で置き換える必要がある場合は、replaceAll という関数を使用できます。 replaceAll の実装例を次に示します。

void replaceAll(std::string& str, const std::string& from, const std::string& to) {
    if(from.empty())
        return;
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
    }
}

replace と replaceAll はどちらも効率的で簡単に使用できます。これらは、さまざまなアプリケーションで文字列内の部分文字列を置換するのに適しています。

以上がC 文字列の部分文字列を効率的に置換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。