Почему cin.get (char *, int, char t) и cin.getline (char *, int, char t)? - PullRequest
0 голосов
/ 16 января 2011

В документации сказано, что cin.get (...) оставит символ завершения (параметр t) в буфере! Мне интересно, как это может быть полезно по сравнению с getline (...), который отбрасывает символ завершения ... Кстати, предположим, у меня есть char buf [256], как я могу сбросить этот buf в cout?

1 Ответ

2 голосов
/ 16 января 2011

Для строк завершающий символ новой строки считается частью строки, и вы обычно хотите удалить его при чтении строки. Конвенция установила, что результирующая строка, содержащая строку , а не , содержит эту новую строку, поэтому getline отбрасывает ее, а не сохраняет. (Другие языки / библиотеки не принимают последнее решение.)

Для других вещей, кроме строк, разделитель не может считаться частью извлекаемого поля, поэтому вы хотите, чтобы оно было оставлено и позже прочитано.

предположим, у меня есть char buf [256], как мне сбросить этот buf в cout?

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

...