रूप Steve द्वारा नोट किया गया था, इस copy_n()
है, जो, एक निरीक्षण के कारण, वर्तमान मानक पुस्तकालय में नहीं है की आवश्यकता होगी, लेकिन सी ++ 1x में होगा। आप एक अपने आप को आसानी से लागू कर सकते हैं, यहाँ एक मैं सही होने के लिए विश्वास है कि है:
template<class InIt, class OutIt>
OutIt copy_n(InIt src, OutIt dest, size_t n)
{
if (!n) return dest;
*dest = *src;
while (--n)
*++dest = *++src;
return ++dest;
}
ध्यान दें कि std::copy_n()
इनपुट इटरेटर मान लिया जाता है n
वस्तुओं वितरित करने के लिए सक्षम होने के लिए। फ़ाइल से पढ़ते समय, यह समस्याग्रस्त हो सकता है।
std::copy_n()
के अनुपस्थित, आप std::generate_n
इस्तेमाल कर सकते हैं।
template< typename InIt >
struct input_generator {
typedef std::iterator_traits<InIt>::value_type value_type;
input_generator(InIt begin, InIt end) begin_(begin), end_(end) {}
value_type operator()()
{
assert(it_ != end);
return *it_++;
}
Init begin_;
Init end_;
};
std::vector<char> buffer;
buffer.reserve(42);
std::generate_n(std::back_inserter(buffer)
, 42
, input_generator(std::istream_iterator<char>(file))
, input_generator(std::istream_iterator<char>()));
हालांकि, मैं avakar showed के रूप में फ़ाइल से सीधे पढ़ने से अधिक लाभ के रूप में देखते नहीं है।
सुंदर नहीं है लेकिन repl_copy_if का उपयोग कर सकता है, यह जांचने के लिए पूर्वानुमान का उपयोग करें कि आपने एन वर्णों की प्रतिलिपि बनाई है या नहीं !! – DumbCoder