В документации указано, что cin.get (...) оставит символ окончания (параметр t) в буфере! Мне интересно, как это может быть полезно по сравнению с getline (...), который отменит символ окончания ... BTW, предположим, что у меня есть char buf [256], как я могу очистить этот buf до cout?Почему cin.get (char *, int, char t) и cin.getline (char *, int, char t)?
ответ
Для строк завершающая строка новой строки считается частью строки, и вы обычно хотите удалить ее при чтении строки. Конвенция определила, что полученная строка, содержащая строку , но не, содержит эту новую строчку, однако, поэтому getline отбрасывает ее, а не сохраняет ее. (Другие языки/библиотеки не принимают последнего решения.)
Для вещей, отличных от линий, разделитель не может считаться частью извлекаемого поля, поэтому вы хотите, чтобы он оставался, а затем читался.
Предположим, у меня есть char buf [256], как я могу очистить этот buf до cout?
Если это С-строка (концевую \ 0), то соиЬ < < BUF ;. В противном случае вы можете cout.write его как неформатированную последовательность байтов.
Я опубликовал, но затем удалил очень похожий ответ, потому что я не мог придумать его для использования ... у вас есть пример? –
@larsmans: Подумайте, осуществляете ли вы программу 'tee'. –
Я бы использовал 'tee' как' char' путем копирования 'char', полагаясь на буферизацию iostream или с буферами фиксированного размера ... –
Пожалуйста, отредактируйте название вопроса: вы уже ответили «какая разница»! –
Пожалуйста, не ставьте второй, не имеющий отношения вопрос в том же сообщении. –