現在、C++をゼロから学ぼうとしています。
私はpython、perl、javascriptに精通していますが、過去に教室でC++に遭遇したのはほんのわずかです。私の質問の素朴な言い訳をしてください。
正規表現を使用して文字列を分割したいのですが、C ++でこれを行う方法の明確で、決定的で、効率的で、完全な例を見つけることができませんでした。
perlでは、これは一般的なアクションであり、したがって、簡単な方法で実行できます。
/home/me$ cat test.txt
this is aXstringYwith, some problems
and anotherXY line with similar issues
/home/me$ cat test.txt | perl -e'
> while(<>){
> my @toks = split(/[\sXY,]+/);
> print join(" ",@toks)."\n";
> }'
this is a string with some problems
and another line with similar issues
C++で同等の機能を実現するための最善の方法を知りたいです。
編集:
以下に説明するように、私はブーストライブラリで探していたものを見つけたと思います。
regex-token-iteratorをブーストします(アンダースコアが機能しないのはなぜですか?)
何を検索すればいいのかわからなかったと思います。
#include <iostream>
#include <boost/regex.hpp>
using namespace std;
int main(int argc)
{
string s;
do{
if(argc == 1)
{
cout << "Enter text to split (or \"quit\" to exit): ";
getline(cin, s);
if(s == "quit") break;
}
else
s = "This is a string of tokens";
boost::regex re("\\s+");
boost::sregex_token_iterator i(s.begin(), s.end(), re, -1);
boost::sregex_token_iterator j;
unsigned count = 0;
while(i != j)
{
cout << *i++ << endl;
count++;
}
cout << "There were " << count << " tokens found." << endl;
}while(argc == 1);
return 0;
}