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 でも同じことが機能するはずです。