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
से पहले तक की कुंजी है यहां: जब इटरेटर को पाठ से पहले पाठक पर इटेटरेटर बिंदु बनाया जाता है और प्रत्येक वृद्धि के बाद इटेटरेटर पिछले मैच के बाद वाले टेक्स्ट पर इंगित करता है।
यदि आपके पास सी ++ 11 नहीं है, तो बूस्ट के साथ एक ही चीज़ TR1 या संभवतः मामूली संशोधन के साथ काम करना चाहिए।
std::vector<std::string>
resplit(const std::string & s, std::string rgx_str = "\\s+") {
std::vector<std::string> elems;
std::regex rgx (rgx_str);
std::sregex_token_iterator iter(s.begin(), s.end(), rgx, -1);
std::sregex_token_iterator end;
while (iter != end) {
//std::cout << "S43:" << *iter << std::endl;
elems.push_back(*iter);
++iter;
}
return elems;
}
यह इस प्रकार काम करता है::
स्रोत
2013-05-25 18:47:08
क्या आपने '+' – Anirudha
कोशिश की है सही पता है कि मैं इस Funct का उपयोग कर रहा हूँ आयनों को विभाजित करने के लिए आयन: http://stackoverflow.com/a/236803/418518 यह केवल __single char__ द्वारा काम करता है। रेगेक्स प्रारूप सही है, मैंने पहले ही उसे एक जावा प्रोजेक्ट में इस्तेमाल किया है। काम करता है शानदार। –
समस्या यह है कि मुझे सी ++ बहुत कुछ नहीं पता ... और मैं सिर्फ पुराने सी ++ मानक ('सी ++ 03' शायद) का उपयोग करके 'std :: string' को विभाजित करने के बारे में जानना चाहता हूं)। यदि आपके पास कुछ लिंक/कोड हैं तो बस इसे पेस्ट करें। :) धन्यवाद! –