मान लीजिए हमारे पास एक स्ट्रिंग है जहां हमारे पास कुछ पूर्णांक हैं जो अल्पविराम से अलग होते हैं। हमें उन्हें अलग करना होगा और प्रत्येक पूर्णांक को अलग-अलग पंक्ति में प्रदर्शित करना होगा। ऐसा करने के लिए हम 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