Этот фрагмент кода работает бесконечно:
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));
Я ожидал, что он остановится, когда я нажму Enter.
Однако это не так.
buff — это вектор символов.
Этот фрагмент кода работает бесконечно:
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));
Я ожидал, что он остановится, когда я нажму Enter.
Однако это не так.
buff — это вектор символов.
Я предполагаю, что вы печатаете что-то на клавиатуре.
Клавиша ввода не означает конец потока. Это просто еще один персонаж с точки зрения кино. Для этого необходимо отправить EOF (Ctrl+Z, Enter в Windows и Ctrl+ D в Unix/Mac).
Кстати, это не обычный способ чтения символов из консоли. Это очень неэффективно (istream_iterator
вызывает operator>>
для каждого символа) и будет работать неправильно с пробелами. Чтобы прочитать строку ввода данных, используйте вместо этого getline
.
cin >> tempstring
не читает строки, он читает до следующего пробела.
- person Marcelo Cantos; 09.05.2010
istreambuf_iterator<char>(cin)
. Это быстрее, так как он не будет форматировать и все такое.
- person Johannes Schaub - litb; 09.05.2010