मैं सीपीपी स्ट्रिंग के लिए स्ट्रिंग टोकेनाइज़र का उपयोग करना चाहता हूं लेकिन मुझे लगता है कि मैं चार * के लिए खोज सकता था। क्या सीपीपी स्ट्रिंग के लिए कुछ भी समान है?स्ट्रिंग टोकननाइज़र?
उत्तर
पर एक नज़र रखना चाहिए?
std::istringstream iss("blah wrxgl bxrcy")
for(;;) {
std::string token;
if(!(iss>>token)) break;
process(token);
}
if(!iss.eof()) report_error();
वैकल्पिक रूप से, अगर आपके एक एक निश्चित ही अलग चरित्र की तलाश में हैं, तो आप iss>>token
std::getline(iss,token,sep_char)
से बदल सकते हैं: अगर यह कुछ द्वारा किसी भी खाली स्थान के अलग है, स्ट्रिंग धाराओं तुम क्या चाहते है।
यदि यह एक से अधिक वर्ण है जो विभाजक के रूप में कार्य कर सकता है (और यदि यह सफेद जगह नहीं है), std::string::find_first()
और std::string::substr()
के संयोजनों को करना चाहिए।
+1 विकल्प – Chubsdad
क्या '(;;) 'ओवर' (जारी >> टोकन)' के लिए पसंद करने का कोई अच्छा कारण है (मान लीजिए कि 'टोकन' लूप से पहले घोषित किया गया था)? इस उदाहरण में यह एक पंक्ति छोटी होगी, और, मेरी राय में, कम से कम कम पठनीय नहीं। –
@ Space_C0wb0y: (मुझे केवल आपकी टिप्पणी समझा गया। ठीक है, कम से कम मुझे लगता है कि मैं करता हूं ...) मैं बस 'लूप' की चतुरता पर एक और स्थानीय चर को पसंद करता हूं। – sbi
चेक बाहर find_first_of तरह एसटीएल algos, find_first_not_of और इतने पर एक कस्टम बनाने के लिए।
आप के रूप chubsdad या उपयोग को बढ़ावा देने tokenizer से कहा है कर सकते हैं: http://www.boost.org/doc/libs/1_44_0/libs/tokenizer/tokenizer.htm
खुद के द्वारा यह ऐसा करने से जटिल अगर आप बूस्ट द्वारा affraid रहे नहीं है।
यहां चब्सडाड से +1 है :) – Chubsdad
आप "टोकन" से क्या मतलब है Boost Tokenizer
इस स्निपेट मैंने कहीं पाया प्रयास करें (हो सकता है यहां तक कि यहाँ?):
#include <string>
#include <vector>
#include <sstream>
std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
while(std::getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
return split(s, delim, elems);
}
- 1. बढ़ावा :: टोकननाइज़र बनाम बढ़ावा :: विभाजन
- 2. PHP में टोकननाइज़र कैसे बनाएं?
- 3. उद्धृत स्ट्रिंग का इलाज एक टोकन
- 4. क्या एफटीएस के लिए आईसीयू टोकननाइज़र के साथ बनाया गया एंड्रॉइड पर SQLite है?
- 5. स्ट्रिंग सरणी में स्ट्रिंग स्ट्रिंग
- 6. क्या सी ++ के लिए टोकननाइज़र उत्पन्न करने के लिए लेक्स/फ्लेक्स की तुलना में बेहतर (अधिक आधुनिक) उपकरण है?
- 7. string.IsNullOrEmpty (स्ट्रिंग) बनाम स्ट्रिंग। IsNullOrWhiteSpace (स्ट्रिंग)
- 8. स्ट्रिंग। फोर्मैट बनाम "स्ट्रिंग" + "स्ट्रिंग" या स्ट्रिंगबिल्डर?
- 9. स्ट्रिंग डिक्शनरी बनाम <स्ट्रिंग, स्ट्रिंग>
- 10. एसडीआईजी स्ट्रिंग :: स्ट्रिंग और सी # रेफ स्ट्रिंग
- 11. स्ट्रिंग स्ट्रिंग सरणी
- 12. स्ट्रिंग बनाम स्ट्रिंग
- 13. स्ट्रिंग मान खाली स्ट्रिंग
- 14. स्ट्रिंग बनाम स्ट्रिंग
- 15. अजगर स्ट्रिंग ' "': स्ट्रिंग
- 16. रूबी स्ट्रिंग स्ट्रिंग मामले
- 17. स्ट्रिंग पैरामीटर को स्ट्रिंग
- 18. स्ट्रिंग सरणी को स्ट्रिंग
- 19. स्ट्रिंग या स्ट्रिंग
- 20. सरणी में स्ट्रिंग स्ट्रिंग
- 21. स्ट्रिंग यूनिकोड स्ट्रिंग
- 22. स्ट्रिंग को स्ट्रिंग
- 23. टाइपप्रति: स्ट्रिंग और स्ट्रिंग
- 24. स्ट्रिंग
- 25. स्ट्रिंग
- 26. स्ट्रिंग
- 27. स्ट्रिंग
- 28. स्ट्रिंग
- 29. स्ट्रिंग
- 30. स्ट्रिंग
कैसे निम्नलिखित से उदाहरण से कुछ के बारे: http://www.codeproject.com/KB/recipes/Tokenizer। एएसपीएक्स वे बहुत ही कुशल और कुछ हद तक सुरुचिपूर्ण हैं। स्ट्रिंग टूलकिट लाइब्रेरी सी ++ में जटिल स्ट्रिंग प्रसंस्करण को सरल और आसान बनाता है। –
संभावित डुप्लिकेट [std :: स्ट्रिंग :: स्ट्रिंग के साथ स्ट्रैटोक का उपयोग करना] (http://stackoverflow.com/questions/289347/using-strtok-with-a-stdstring) – bobobobo