मैं Boost.Regex के साथ शब्दों और संख्याओं के लिए तारों का विश्लेषण करने के लिए चारों ओर खेल रहा था।क्या आप स्ट्रीम को पार्स करने के लिए Boost.Regex का उपयोग कर सकते हैं?
#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;
}
वहाँ एक रास्ता एक स्ट्रिंग एक धारा के बजाय से पार्स करने के लिए रेगुलर एक्सप्रेशन से बताने के लिए है: यह क्या मैं अब तक किया है? ऐसा लगता है कि किसी भी इटरेटर का उपयोग करना संभव होना चाहिए।
आप बिना किसी '' '' '' '' '' '' '' के बिना स्ट्रिंग को जोड़ सकते हैं? वाह मैंने कभी नहीं देखा है ... क्या वह मानक है? –
हां, यह हमेशा सी और सी ++ में मानक रहा है। आप इस तरह स्ट्रिंग स्थिरांक को जोड़ सकते हैं, लेकिन सी ++ std :: तार नहीं। – Ferruccio