複数の区切り文字による文字列の分割
テキストを意味のある単位に分割するというタスクを課された開発者は、文字列を単語に分割する必要に遭遇することがよくあります。単一の区切り文字の場合は従来の方法で十分ですが、複数の区切り文字が関係する場合はどのようなオプションが利用できますか?
この課題に対処するために、文字列の分割に複数の区切り文字を使用する手法を実装できます。解決策を詳しく見てみましょう。
C では、文字列ストリームを使用して単一の区切り文字を持つ文字列を解析するための構文は次のとおりです。
std::stringstream stringStream(inputString); std::string word; while(std::getline(stringStream, word, delimiter)) { wordVector.push_back(word); }
複数の区切り文字に対応するには、まず次のようにします。行全体をバッファに入れます。続いて、その行を反復処理して、指定された区切り文字のいずれかが出現する位置を特定します。現在の区切り文字の位置から前の位置を減算することで、単語を表す部分文字列を取得し、それを単語ベクトルに追加します。
たとえば、区切り文字としてスペース、アポストロフィ、セミコロンを選択すると、次のコードはタスクを実行します:
std::stringstream stringStream(inputString); std::string line; while(std::getline(stringStream, line)) { std::size_t prev = 0, pos; while ((pos = line.find_first_of(" ';", prev)) != std::string::npos) { if (pos > prev) wordVector.push_back(line.substr(prev, pos-prev)); prev = pos+1; } if (prev < line.length()) wordVector.push_back(line.substr(prev, std::string::npos)); }
以上がC で複数の区切り文字を使用して文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。