मान लीजिए हमारे पास एक स्ट्रिंग है जहां हमारे पास कुछ पूर्णांक हैं जो अल्पविराम से अलग होते हैं। हमें उन्हें अलग करना होगा और प्रत्येक पूर्णांक को अलग-अलग पंक्ति में प्रदर्शित करना होगा। ऐसा करने के लिए हम C++ में stringstream (sstream लाइब्रेरी के तहत) का उपयोग करेंगे। यह सी ++ में मौजूद एक स्ट्रिंग आधारित स्ट्रीम क्लास है। हम कुछ निकालने के लिए निष्कर्षण ऑपरेटर (<<) का उपयोग कर सकते हैं, कुछ डालने के लिए सम्मिलन ऑपरेटर (>>) और अंतर्निहित स्ट्रिंग डिवाइस ऑब्जेक्ट की सामग्री सेट करने के लिए str() फ़ंक्शन का उपयोग कर सकते हैं।
इसलिए, यदि इनपुट s ="56,9,85,256,47" जैसा है, तो आउटपुट होगा
56 9 85 256 47
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक सरणी परिभाषित करें take_int(string str)
-
ss नामक एक स्ट्रिंगस्ट्रीम ऑब्जेक्ट बनाएं
-
एक सरणी परिणाम परिभाषित करें
-
जबकि ss से अस्थायी में लिया गया नया पूर्णांक आइटम शून्य नहीं है, करें:
-
परिणाम के अंत में tmp डालें
-
एकल वर्ण निकालकर अल्पविराम वर्ण छोड़ें
-
-
वापसी परिणाम
-
-
मुख्य विधि से निम्न कार्य करें:
-
एक सरणी पूर्णांक परिभाषित करें =take_int(s)
-
प्रारंभ करने के लिए मैं:=0, जब मैं <पूर्णांक का आकार, अद्यतन (मैं 1 से बढ़ाएँ), यह करें:
-
पूर्णांक प्रदर्शित करें[i]
-
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <iostream> #include <sstream> #include <vector> using namespace std; vector<int> take_int(string str) { stringstream ss(str); vector<int> result; char ch; int tmp; while(ss >> tmp) { result.push_back(tmp); ss >> ch; } return result; } int main(){ string s = "56,9,85,256,47"; vector<int> integers = take_int(s); for(int i = 0; i < integers.size(); i++) cout << integers[i] << "\n"; }
इनपुट
56,9,85,256,47
आउटपुट
56 9 85 256 47