vector<int> someVector
के साथ एक उदाहरण में और istringstream someStringStream
आप यह कर सकते हैं:वेक्टर <bool> के साथ निष्कर्षण ऑपरेटर (>>) का उपयोग कैसे करते हैं?
for (int i=0; i < someVector.size(); i++) {
someStringStream >> someVector[i];
}
मुझे पता है कि vector<bool>
एक कुशल कार्यान्वयन है, और operator[]
एक संदर्भ वस्तु देता है। इस कोड के लिए मुझे अधिकतर पठनीयता के लिए एक इटरेटर की बजाय इंडेक्स का उपयोग करना चाहिए। वर्तमान में, मैं इस का उपयोग कर रहा:
for (int i=0; i < someVector.size(); i++) {
bool temp;
someStringStream >> temp;
someVector[i] = temp;
}
इस को लागू करने का एक और अधिक प्रत्यक्ष रास्ता नहीं है?
यह सुरक्षित नहीं है। यदि ऑपरेटर >> विफल रहता है, तो "मान" को प्रारंभ नहीं किया जाएगा। या तो स्ट्रीम स्टेटस को स्पष्ट रूप से चेक किया जाना चाहिए, या std :: ios_base :: विफलता को स्ट्रीम के अपवादों() में ऑर्डर किया जाना चाहिए। –
@ArneVogel यह C++ 11 में बदल गया है: यदि निष्कर्षण विफल रहता है, शून्य मान पर लिखा जाता है (http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt देखें)। हालांकि, मैं सहमत हूं कि उत्पादन कोड में त्रुटि जांच आवश्यक है। फिर भी, ऐसा करने के कई तरीके हैं। यह एक चुनने के लिए सवाल का दायरा नहीं है, इमो। – stefan