C++ で、文字列のリストの ANY の最初のインスタンスを文字列から検索する方法を知りたいです。のフルワード バージョンの一種std::string::find_first_of()
: "引数で指定された文字のいずれかと一致する最初の文字を文字列から検索します"。
提供されたリスト/配列内の単語のいずれかと一致する最初の WORD を文字列から検索するものが必要です。明確にするために、文字列のインスタンスの配列を検索したくありません。配列内の何かのインスタンスについて、文字列を検索したい。
私の目標は、文を取り、リストにあるすべての単語を削除できるようにすることです。たとえば、リスト{"the" "brown", "over"};
と文を渡すと、 "the quick brown fox jumped over the lazy dog"
、出力したい" quick fox jumped lazy dog"
. また、必要に応じて 100 語のリストを提供できるようにしたいと考えています。これを拡張可能にする必要があります。
私が考えることができる唯一の解決策は、テキストブロックのループで使用std::find(stringArray[0])
し、while
その単語が見つかったインデックスを保存し、それをすべて別のfor
ループに入れて、配列内のすべての単語に対してそれを行い、各単語のインデックスを 1 つの巨大なリストにまとめます。必要に応じて、そのリストを数値で並べ替え、最後に、そのリスト内の位置にある各単語を調べて削除します。
特に、50,000文字のすべての文を通過するために、多くの異なる文字列で何度も使用する必要があるため、私のソリューションは難しく、非常に遅いように見えるため、関数またはそれを行うためのより簡単な方法があることを本当に望んでいますテキストのブロック。より最適化されたものが優先されます。