Для строк завершающий символ новой строки считается частью строки, и вы обычно хотите удалить его при чтении строки. Конвенция установила, что результирующая строка, содержащая строку , а не , содержит эту новую строку, поэтому getline отбрасывает ее, а не сохраняет. (Другие языки / библиотеки не принимают последнее решение.)
Для других вещей, кроме строк, разделитель не может считаться частью извлекаемого поля, поэтому вы хотите, чтобы оно было оставлено и позже прочитано.
предположим, у меня есть char buf [256], как мне сбросить этот buf в cout?
Если это C-строка (оканчивающаяся на \ 0), то cout << buf ;. В противном случае вы можете записать его как неотформатированную последовательность байтов. </p>