Kelimeler ve sayılar için dizeleri ayrıştırmak için Boost.Regex ile oynuyordum.Bir akışı ayrıştırmak için Boost.Regex'i kullanabilir miyim?
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/regex.hpp>
#include <boost/range.hpp>
using namespace std;
using namespace boost;
int main()
{
regex re
(
"("
"([a-z]+)|"
"(-?[0-9]+(\\.[0-9]+)?)"
")"
);
string s = "here is a\t list of Words. and some 1239.32 numbers to 3323 parse.";
sregex_iterator m1(s.begin(), s.end(), re), m2;
BOOST_FOREACH (const match_results<string::const_iterator>& what, make_iterator_range(m1, m2)) {
cout << ":" << what[1].str() << ":" << what.position(1) << ":" << what.length(1) << endl;
}
return 0;
}
bir akış yerine bir dizesinden ayrıştırmak için regex anlamanın bir yolu var mı: Bu defa ne var? Herhangi bir yineleyicinin kullanılması mümkün gibi görünüyor.
Dizeleri sadece "a" "b" '+' olmadan ayırabilirsiniz. Vay görmedim ki ... bu standart mı? –
Evet, bu her zaman C ve C++ standartlarında olmuştur. Dize sabitlerini bu şekilde birleştirebilirsiniz, ancak C++ std :: dizeleriyle değil. – Ferruccio