Я не совсем понимаю, чем чтение строки через итераторы отличается от чтения напрямую. В качестве примера рассмотрим код ниже:
#include <iostream>
#include <string>
#include <iterator>
using namespace std;
int main()
{
string str{istream_iterator<char>(cin),{}};
cout << str << endl;
string str1;
cin >> str1;
cout << str1 << endl;
}
Очевидно, что он делает, он читает str
, используя istream_iterator
, и читает str1
традиционным методом. У меня есть 2 вопроса:
- Единственный способ завершить чтение с помощью строковых итераторов — отправить
CTRL+D
(Unix), что также завершает программу, поэтому вторая часть не выполняется. Есть ли способ обойти это? - При чтении с помощью итераторов не имеет значения, ввожу ли я пробелы (пробел, \t, \n), итератор продолжает читать. Почему это поведение отличается от того, что происходит при чтении напрямую через
cin >>
?
string str{istream_iterator<char>(cin),{}};
- person vsoftco   schedule 06.08.2014