C++ - 正規表現で文字列を分割する 質問する

C++ - 正規表現で文字列を分割する 質問する

std::stringで分割したいですregex

Stackoverflow でいくつかの解決策を見つけましたが、そのほとんどは文字列を 1 つのスペースで分割するか、boost などの外部ライブラリを使用するものでした。

ブーストが使えません。

正規表現で文字列を分割したいです"\\s+"

この g++ バージョンを使用していますg++ (Debian 4.4.5-8) 4.4.5が、アップグレードできません。

ベストアンサー1

#include <regex>

std::regex rgx("\\s+");
std::sregex_token_iterator iter(string_to_split.begin(),
    string_to_split.end(),
    rgx,
    -1);
std::sregex_token_iterator end;
for ( ; iter != end; ++iter)
    std::cout << *iter << '\n';

ここで重要なの-1は、反復子が構築されると、反復子は一致の前のテキストを指し、各増分後に反復子は前の一致に続くテキストを指します。

C++11 をお持ちでない場合は、TR1 または (おそらく若干の変更を加えることで) Boost でも同じことが機能するはずです。

おすすめ記事