I am trying to count the amount of elements read by std::cin
by using std::distance
for the constructor argument of a vector in advance, like so:
// Gives correct amount, but now can't use to put into vector
int size = std::distance(std::istream_iterator<std::string>(std::cin),
std::istream_iterator<std::string>());
std::vector v(size);
// Already read from stream
std::copy(...);
Obviously I can complete this in one step with std::copy
, but that would require setting a size beforehand. My question isn't about vectors though, it's about getting the size of an arbitrary input using std::istream_iterator
without affecting the stream. Any ideas?