मैं इसstd :: istream_iterator के लिए प्रारंभ और अंत के मेरे ओवरलोड को खोजने के लिए क्यों नहीं है?
std::ifstream file(filename, std::ios_base::in);
if(file.good())
{
file.imbue(std::locale(std::locale(), new delimeter_tokens()));
for(auto& entry : std::istream_iterator<std::string>(file))
{
std::cout << entry << std::endl;
}
}
file.close();
की तरह कोड जहां std::istream_iterator<std::string>
के begin()
और end()
के रूप में परिभाषित कर रहे हैं
template<class T>
std::istream_iterator<T> begin(std::istream_iterator<T>& stream)
{
return stream;
}
template<class T>
std::istream_iterator<T> end(std::istream_iterator<T>& stream)
{
return std::istream_iterator<T>();
}
जो क्या मार्क नेल्सन भी डॉ डॉब के here में के बारे में लिखा है इस प्रकार है। अफसोस, कोड त्रुटि संदेश
त्रुटि C3312 के साथ अपने दृश्य स्टूडियो 2012 को संकलित करने के लिए विफल रहता है: प्रकार के लिए कोई प्रतिदेय 'शुरू' समारोह 'std :: istream_iterator < _Ty>'
और
त्रुटि C3312: प्रकार के लिए कोई प्रतिदेय 'अंत' समारोह 'std :: istream_iterator < _Ty>'
प्रश्न: क्या ऐसा कुछ है जो मैंने नहीं देखा है, कंपाइलर में बग (संभावना नहीं है, लेकिन केवल मामले में) या ... अच्छा, कोई विचार?
Xeo द्वारा सलाह के अनुसार, यह प्रश्न काफी साफ हो गए हैं। अधिक पृष्ठभूमि और संदर्भ प्रदान करने के लिए यह स्टैक ओवरफ्लो पर मेरे other question से संबंधित है, मैं सोच रहा था कि सामान्य लूप की तुलना में लाइन आधारित पार्सिंग क्लीनर कैसे बनाना है। कोडिंग और इंटरनेट से जांच करने और उन्हें एक छोटा सा के रूप में
std::ifstream file(filename, std::ios_base::in);
if(file.good())
{
file.imbue(std::locale(std::locale(), new delimeter_tokens()));
for(auto& entry : istream_range<std::string>(file)
{
std::cout << entry << std::endl;
}
}
file.close();
इस प्रकार है, लेकिन मामूली रोड़ा मैं उपाय करने की कोशिश की थी मैं एक काम कर स्केच था। मुझे लगता है कि कोड है कि संकलित करने के लिए और पसंद नहीं
for(auto& entry : istream_range<std::string>(file)
कृपया, अलग इटरेटर लिख लेना चाहिए विफल रहता है के रूप में अधिक लिखने के लिए प्राकृतिक लगेगा। delimeter_tokensNawaz तरह परिभाषित किया गया है कृपया कोड संश्लेषण ब्लॉग here में के रूप में here (नहीं दोहराया कोड) और istream_range दिखाई है। मुझे लगता है कि उपरोक्त कोड संश्लेषण ब्लॉग पोस्ट
में अंतिम नियम (फ्री-स्टैंडिंग शुरू() और अंत() फ़ंक्शंस में फ़ॉलबैक) हमें मौजूदा कंटेनर को गैर-आक्रामक रूप से अनुकूलित करने की अनुमति देता है, जैसा कि प्रारंभ और अंत कार्यान्वयन कार्य करना चाहिए, लूप इंटरफ़ेस के लिए श्रेणी-आधारित पर।
इस प्रकार सभी प्रश्न (आईआर) प्रासंगिक पृष्ठभूमि के साथ मेरा प्रश्न।
मैं स्वतंत्रता ले लिया वास्तविक प्रश्न पूछा प्रतिबिंबित करने के लिए सवाल शीर्षक बदलने के लिए। यदि आवश्यक हो तो वापस रोल करें या बदलें। – Xeo
यह बेहतर है, मुझे लगता है। यह उन लोगों का ध्यान रखता है जो मेरे जैसे समाधान की तलाश में हैं और जिनके पास हल करने के लिए लुकअप समस्या है। मैं आपकी पोस्ट को उत्तर के रूप में कैसे बना सकता हूं (या कोई और इसे पूरा करता है)? – Veksi
इसके लिए भी धन्यवाद! : डी – Veksi